﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Data;
using DevExpress.Web.ASPxGridView;
using System.Collections;
using System.Threading;
using DataAccess;
using Common;
using DevExpress.Web.ASPxUploadControl;
using System.IO;
using System.Drawing;

public partial class ViaticosRegistroViajeProgramado : PageBase
{
    const string UploadDirectory = "~/Archivos/Comisiones/";

    public string Variable
    {
        get { if (ViewState["variable"] != null) return ViewState["variable"].ToString(); else return this.__variable; }
        set { ViewState["variable"] = value; this.__variable = value; }
    }

    private string __variable;

    #region ThumbnailFileName
    public string ThumbnailFileName
    {
        get
        {
            if (ViewState["ThumbnailFileName"] != null)
                return ViewState["ThumbnailFileName"].ToString();
            return "";
        }
        set { ViewState["ThumbnailFileName"] = value; }
    }
    #endregion

    #region StrComId
    public string StrComId
    {
        get
        {
            if (ViewState["StrComId"] != null)
                return ViewState["StrComId"].ToString();
            return "";
        }
        set { ViewState["StrComId"] = value; }
    }
    #endregion

    #region StrPlnId

    public string StrPlnId
    {
        get
        {
            if (ViewState["strPlnId"] != null)
                return ViewState["strPlnId"].ToString();
            else
                return "";
        }
        set { ViewState["strPlnId"] = value; }
    }
    #endregion

    #region TraerContextItems
    private void TraerContextItems()
    {
        if (Context != null)
        {

            if (Context.Items["StrComId"] != null)
                StrComId = Context.Items["StrComId"].ToString();
        }
    }
    #endregion

    DataSet ds = null;
    DataSet dsAgenda = null;

    #region Page_Load
    protected void Page_Load(object sender, EventArgs e)
    {



        if (IsCallback)
            // Intentionally pauses server-side processing,
            // to demonstrate the Loading Panel functionality.
            Thread.Sleep(500);
        if (!IsPostBack)
        {

            // funcion eliminar con permisos de la pagina

            //for (int i = 0; i < Permisos.Count; i++)
            //{
            //    if (Permisos.Contains(Utilidad.Acciones.Eliminar))
            //    {
            //        btnEliminar
            //    }
            //}


            //limpia las variables de session cuando carga la pagina por primera vez
            Session["Archivo1"] = "";
            Session["Archivo2"] = "";
            Session["Archivo3"] = "";



            /////////////////////////////////////////////////////
            //      ANALISIS TECNICO Y ECONOMICO
            /////////////////////////////////////////////////////
            ds = new DataSet();
            DataTable masterTable = new DataTable();
            masterTable.Columns.Add("CCB_ID", typeof(Decimal));
            masterTable.Columns.Add("COM_ID", typeof(Decimal));
            masterTable.Columns.Add("ZON_ID", typeof(String));

            masterTable.Columns.Add("ZOP_ID", typeof(Decimal));
            masterTable.Columns.Add("ZOP_CIUDAD", typeof(String));
            masterTable.Columns.Add("CTD_ID", typeof(Decimal));
            masterTable.Columns.Add("CCB_ORIGEN", typeof(String));

            masterTable.PrimaryKey = new DataColumn[] { masterTable.Columns["CCB_ID"] };

            ds.Tables.AddRange(new DataTable[] { masterTable });
            Session["DataSet"] = ds;


            /////////////////////////////////////////////////////
            //      COM_COMISION_AGENDA
            /////////////////////////////////////////////////////
            dsAgenda = new DataSet();
            DataTable masterTableAgenda = new DataTable();
            masterTableAgenda.Columns.Add("CCA_ID", typeof(Decimal));
            masterTableAgenda.Columns.Add("CCA_DESCIPCION", typeof(String));
            masterTableAgenda.Columns.Add("CCA_FECHA", typeof(DateTime));

            masterTableAgenda.Columns.Add("CCA_HORA_INICIO", typeof(String));
            masterTableAgenda.Columns.Add("CC_HORA_FIN", typeof(String));
            masterTableAgenda.Columns.Add("ZON_ID", typeof(String));
            masterTableAgenda.Columns.Add("ZOP_ID", typeof(String));
            masterTableAgenda.Columns.Add("COM_ID", typeof(Decimal));
            masterTableAgenda.Columns.Add("ZOP_CIUDAD", typeof(String));

            masterTableAgenda.PrimaryKey = new DataColumn[] { masterTableAgenda.Columns["CCA_ID"] };

            dsAgenda.Tables.AddRange(new DataTable[] { masterTableAgenda });
            Session["DataSetAgenda"] = dsAgenda;

            //AccordionPane1.Enabled = false;
            //if (Request.QueryString["e"] != null && Request.QueryString["a"] != null && Request.QueryString["r"] != null)
            if (Request.QueryString["a"] != null && Request.QueryString["r"] != null)
            {
                StrPlnId = Request.QueryString["a"].ToString();
                // = Request.QueryString["e"].ToString();
                StrComId = Request.QueryString["r"].ToString();
                // TabPanelContratos.ActiveTabIndex = 2;

                if (Request.QueryString["i"] != null)
                {
                    if (Request.QueryString["i"].ToString() == "1")
                    {
                        ASPxPageControl1.ActiveTabIndex = Convert.ToInt32(Request.QueryString["i"].ToString());
                        btnVolver.Visible = false;
                    }
                }
                //ASPxRoundPanel5.Enabled = false;
            }
            else
            {
                TraerContextItems();
            }



            cargarPersonas();
            cargarTipoDePlan();
            cargarCDPViaticos();
            cargarCDPTiquetes();
            cargarDepartamentos();
            cargarTipoDestino();
            cargarRegiones();

            if (StrComId != "")
            {
                CargarCampos();
            }
            else
            {
                ///////////////////////////////////////////////////////////////////////////////////////////
                //Consulta si el usuario actual tiene permiso en la siguiente fase //
                ///////////////////////////////////////////////////////////////////////////////////////////
                Model.DataClassesViaticosDataContext contexto = new Model.DataClassesViaticosDataContext(ConfigurationManager.AppSettings["Conn"]);

                var datosPermisosUsuarioComision = from a in contexto.ADM_PERMISOS_COMISIONEs
                                                   where a.USU_ID == Usuario.UsuId
                                                   select a;

                bool boolBandera = false;
                foreach (var t in datosPermisosUsuarioComision)
                {
                    decimal decPermisoUsuario = Convert.ToDecimal(t.COE_ID);

                    if (decPermisoUsuario == 0)
                    {
                        boolBandera = true;
                    }
                }

                if (boolBandera)
                {
                    verificarPermisosBotones(Convert.ToInt32(0));
                }
                else
                    verificarPermisosBotones(20);
            }




            //else
            //{
            //    limpiarCamposContrato();
            //    limpiarCamposContratista();
            //}
        }
        else
        {

            ds = (DataSet)Session["DataSet"];
            dsAgenda = (DataSet)Session["DataSetAgenda"];
        }


        ASPxGridViewZonas.DataSource = ds.Tables[0];
        ASPxGridViewZonas.DataBind();

        ASPxGridViewAgenda.DataSource = dsAgenda.Tables[0];
        ASPxGridViewAgenda.DataBind();

    }
    #endregion

    #region cargarDepartamentos
    private void cargarDepartamentos()
    {
        Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
        var datos = from a in contexto.BAS_ZONAS_GEOGRAFICAs
                    where object.Equals(a.ZON_PADRE_ID, null)
                    select a;
        if (datos == null) return;
        ddlDepartamentoOrigen.DataSource = datos;
        ddlDepartamentoOrigen.TextField = "ZON_NOMBRE";
        ddlDepartamentoOrigen.ValueField = "ZON_ID";
        ddlDepartamentoOrigen.DataBind();
        ddlDepartamentoOrigen.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("", ""));

    }
    #endregion

    #region CargarCampos
    private void CargarCampos()
    {
        try
        {

            Model.DataClassesContratosDataContext contexto2 = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);

            Model.DataClassesViaticosDataContext contexto = new Model.DataClassesViaticosDataContext(ConfigurationManager.AppSettings["Conn"]);
            var datos = from a in contexto.COM_COMISIONs
                        where a.COM_ID == Convert.ToDecimal(StrComId)

                        select a;
            foreach (var v in datos)
            {
                //////////////////////////////////////////////////
                //   apaga todos los botones por defecto        //
                //////////////////////////////////////////////////
                verificarPermisosBotones(20);
                DateTime objFechaSalida = Convert.ToDateTime(v.COM_FECHA_SALIDA);
                COM_FECHA_SALIDA.Text = objFechaSalida.ToShortDateString();
                DateTime objFechaRegreso = Convert.ToDateTime(v.COM_FECHA_REGRESO);
                COM_FECHA_REGRESO.Text = objFechaRegreso.ToShortDateString();
                COM_TOTAL_DIAS.Text = v.COM_TOTAL_DIAS.ToString();
                //PREGUNTAR SI ES CONTRATISTA O FUNCIOANRIO
                var datosTipoContratista = from u in contexto2.CON_CONTRATISTAs
                                           where u.CCO_ID == v.CCO_ID
                                           select u;
                foreach (var g in datosTipoContratista)
                {
                    CCO_TIPO.Value = g.CCO_TIPO.ToString();
                }
                cargarPersonas();
                CCO_ID.Value = v.CCO_ID.ToString();
                Session["CCO_ID"] = v.CCO_ID.ToString();
                COM_VIATICOS_DESCIPCION.Text = v.COM_VIATICOS_DESCIPCION;
                FAE_ID_VIATICOS.Value = v.FAE_ID_VIATICOS.ToString();
                COM_TIQUERES_DESCIPCION.Text = v.COM_TIQUERES_DESCIPCION;
                FAE_ID_TIQUETES.Value = v.FAE_ID_TIQUETES.ToString();


                COM_VIATICOS_VALOR_ALOJAMIENTO.Text = Convert.ToInt32(v.COM_VIATICOS_VALOR_ALOJAMIENTO).ToString();
                COM_VIATICOS_VALOR_TRANSPORTE_LOCAL.Text = Convert.ToInt32(v.COM_VIATICOS_VALOR_TRANSPORTE_LOCAL).ToString();
                COM_VIATICOS_VALOR_MANUTENCION.Text = Convert.ToInt32(v.COM_VIATICOS_VALOR_MANUTENCION).ToString();
                COM_VIATICOS_VALOR_OTROS_TRANS_TERRESTRE.Text = Convert.ToInt32(v.COM_VIATICOS_VALOR_OTROS_TRANS_TERRESTRE).ToString();
                COM_VIATICOS_VALOR_OTROS_TRANS_FLUVIAL.Text = Convert.ToInt32(v.COM_VIATICOS_VALOR_OTROS_TRANS_FLUVIAL).ToString();
                COM_VIATICOS_VALOR_OTROS_PEAJE_GASOLINA.Text = Convert.ToInt32(v.COM_VIATICOS_VALOR_OTROS_PEAJE_GASOLINA).ToString();
                COM_VIATICOS_VALOR_TOTAL.Text = Convert.ToInt32(v.COM_VIATICOS_VALOR_TOTAL).ToString();

                COM_TIQUETES_VALOR_TOTAL.Text = v.COM_TIQUETES_VALOR_TOTAL.ToString();


                COM_ACTIVIDAD_GENERA_DESPLAZAMIENTO.Text = v.COM_ACTIVIDAD_GENERA_DESPLAZAMIENTO;
                COM_OBJETO_PLAN_VIAJE.Text = v.COM_OBJETO_PLAN_VIAJE;
                COM_JUSTIFICACION_VIAJE.Text = v.COM_JUSTIFICACION_VIAJE;
                COM_LOGROS_ESPERADOS.Text = v.COM_LOGROS_ESPERADOS;
                COM_RESUMEN.Text = v.COM_RESUMEN;
                COM_CONTENIDO.Text = v.COM_CONTENIDO;
                COM_CONCLUSIONES.Text = v.COM_CONCLUSIONES;
                COM_RECOMENDACIONES.Text = v.COM_RECOMENDACIONES;
                COM_CUMPLIDO_INFORME.Text = v.COM_CUMPLIDO_INFORME;
                COM_RECIBOS_TRANSPORTE_TERRESTRE.Text = v.COM_RECIBOS_TRANSPORTE_TERRESTRE;
                COM_RECIBOS_TRANSPORTE_FLUVIAL.Text = v.COM_RECIBOS_TRANSPORTE_FLUVIAL;
                COM_OTROS.Text = v.COM_OTROS;
                txtFechaRegistro.Text = v.COM_FECHA_REGISTRO.ToString();
                lblNumeroComision.Text = StrComId;

                if (v.COM_ENTIDAD_SUMINISTRA_TIQUETES != null)
                    COM_ENTIDAD_SUMINISTRA_TIQUETES.Value = v.COM_ENTIDAD_SUMINISTRA_TIQUETES.ToString();

                if (v.COM_ENTIDAD_SUMINISTRA_VIATICOS != null)
                    COM_ENTIDAD_SUMINISTRA_VIATICOS.Value = v.COM_ENTIDAD_SUMINISTRA_VIATICOS.ToString();


                // lo debe traer del web config

                //previewImage.Src = @"Archivos/Comisiones/" + v.COM_PASABORDO;
                //imgPasabordo.ImageUrl = @"Archivos/Comisiones/" + v.COM_PASABORDO;

                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_cargaImagen", "CargarPreviewImageElement('Archivos/Comisiones/" + v.COM_PASABORDO + "?dx=" + DateTime.Now.Ticks.ToString() + "');", true);


                HyperLinkPasabordoOrigen.Text = v.COM_PASABORDO;
                HyperLinkPasabordoOrigen.NavigateUrl = UploadDirectory + v.COM_PASABORDO;


                HyperLinkPasabordoDestino.Text = v.COM_PASABORDO_REGRESO;
                HyperLinkPasabordoDestino.NavigateUrl = UploadDirectory + v.COM_PASABORDO_REGRESO;
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_cargaImagen2", "CargarPreviewImageElement2('Archivos/Comisiones/" + v.COM_PASABORDO_REGRESO + "?dx=" + DateTime.Now.Ticks.ToString() + "');", true);



                HyperLinkPasabordoOtro.Text = v.COM_PASABORDO_OTROS;
                HyperLinkPasabordoOtro.NavigateUrl = UploadDirectory + v.COM_PASABORDO_OTROS;
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_cargaImagen3", "CargarPreviewImageElement3('Archivos/Comisiones/" + v.COM_PASABORDO_OTROS + "?dx=" + DateTime.Now.Ticks.ToString() + "');", true);


                //COM_NUMERO_RESOLUCION.Text = v.COM_NUMERO_RESOLUCION;
                //COM_FECHA_NUMERO_RESOLUCION.Text = v.COM_FECHA_NUMERO_RESOLUCION.ToString();


                var datosUsuarioRAdica = from a in contexto2.ADM_USUARIOs
                                         where a.USU_ID == v.USU_ID
                                         select a;
                foreach (var d in datosUsuarioRAdica)
                {
                    txtUsuRadica.Text = d.USU_NOMBRE;
                }



                CTI_ID.Value = v.CTI_ID.ToString();
                if (v.CTI_ID == 2)
                {
                    trDescripcionViaje.Visible = true;
                    COM_JUSTIFICACION_VIAJE_NO_PROGRAMADO.Text = v.COM_JUSTIFICACION_VIAJE_NO_PROGRAMADO;
                }
                else
                {
                    trDescripcionViaje.Visible = false;
                }


                CTD_ID.Value = v.CTD_ID.ToString();
                if (v.CTD_ID == 2)
                {
                    trRegion.Visible = true;
                    reqRegion.Enabled = true;
                    if (v.CRE_ID != null)
                        CRE_ID.Value = v.CRE_ID.ToString();
                }
                else
                {
                    trRegion.Visible = false;
                    reqRegion.Enabled = false;
                }




                if (FAE_ID_VIATICOS.Value != "")
                {
                    var datosCdp = from a in contexto2.FIN_ACCION_EPEs
                                   join b in contexto2.SIG_ACCIONs on a.ACC_ID equals b.ACC_ID
                                   join e in contexto2.SIG_ACTIVIDADEs on b.SAC_ID equals e.SAC_ID
                                   join f in contexto2.SIG_ACTIVIDADES_SUPERIORs on e.SAS_ID equals f.SAS_ID
                                   join c in contexto2.SIG_PLAN_ACCIONs on b.PLN_ID equals c.PLN_ID
                                   join d in contexto2.BAS_DEPENDENCIAs on c.DEP_ID equals d.DEP_ID
                                   where a.FAE_ID == Convert.ToDecimal(FAE_ID_VIATICOS.Value)

                                   select new
                                   {
                                       a.FAE_NUMEROEPE,
                                       a.FAE_ID,
                                       d.DEP_NOMBRE,
                                       c.PLN_NOMBRE,
                                       f.SAS_NOMBRE,
                                       c.PLN_ID
                                   };
                    if (datosCdp == null) return;
                    else
                    {
                        foreach (var i in datosCdp)
                        {
                            lblDependencia.Text = i.DEP_NOMBRE;
                            lblRubro.Text = i.SAS_NOMBRE;
                            StrPlnId = i.PLN_ID.ToString();
                        }
                    }
                }

                ///////////////////////////////////////////////////////////////////////////////////////////
                //Consulta si el usuario actual tiene permiso en la siguiente fase //
                ///////////////////////////////////////////////////////////////////////////////////////////



                var datosPermisosUsuarioComision = from a in contexto.ADM_PERMISOS_COMISIONEs
                                                   where a.USU_ID == Usuario.UsuId && a.PLN_ID == Convert.ToDecimal(StrPlnId)
                                                   select a;

                bool boolBandera = false;
                foreach (var z in datosPermisosUsuarioComision)
                {
                    decimal decPermisoUsuario = Convert.ToDecimal(z.COE_ID);

                    if (decPermisoUsuario == v.COE_ID)
                    {
                        boolBandera = true;
                    }
                }

                if (boolBandera)
                {
                    verificarPermisosBotones(Convert.ToInt32(v.COE_ID));
                }

                if (Usuario.PerfilActual == 120)
                    verificarPermisosBotones(7);




                if (FAE_ID_TIQUETES.Value != "")
                {
                    var datosCdpTiquetes = from a in contexto2.FIN_ACCION_EPEs
                                           join b in contexto2.SIG_ACCIONs on a.ACC_ID equals b.ACC_ID
                                           join e in contexto2.SIG_ACTIVIDADEs on b.SAC_ID equals e.SAC_ID
                                           join f in contexto2.SIG_ACTIVIDADES_SUPERIORs on e.SAS_ID equals f.SAS_ID
                                           join c in contexto2.SIG_PLAN_ACCIONs on b.PLN_ID equals c.PLN_ID
                                           join d in contexto2.BAS_DEPENDENCIAs on c.DEP_ID equals d.DEP_ID
                                           where a.FAE_ID == Convert.ToDecimal(FAE_ID_TIQUETES.Value)

                                           select new
                                           {
                                               a.FAE_NUMEROEPE,
                                               a.FAE_ID,
                                               d.DEP_NOMBRE,
                                               c.PLN_NOMBRE,
                                               f.SAS_NOMBRE
                                           };
                    if (datosCdpTiquetes == null) return;
                    else
                    {
                        foreach (var j in datosCdpTiquetes)
                        {
                            lblDependenciaTiquete.Text = j.DEP_NOMBRE;
                            lblRubroTiquete.Text = j.SAS_NOMBRE;
                        }
                    }



                }
                if (!String.IsNullOrEmpty(v.ZON_ID_ORIGEN))
                {
                    string strDep = v.ZON_ID_ORIGEN.Substring(0, 2);

                    ddlDepartamentoOrigen.Value = strDep;

                    var datosZonas = from a in contexto2.BAS_ZONAS_GEOGRAFICAs
                                     where object.Equals(a.ZON_PADRE_ID, strDep)
                                     select a;
                    if (datosZonas != null)
                    {
                        ddlMunicipioOrigen.DataSource = datosZonas;
                        ddlMunicipioOrigen.TextField = "ZON_NOMBRE";
                        ddlMunicipioOrigen.ValueField = "ZON_ID";
                        ddlMunicipioOrigen.DataBind();
                        ddlMunicipioOrigen.Value = v.ZON_ID_ORIGEN;
                    }
                }



            }


            //SI EXISTEN DATOS DE COM_COMISION_BAS_ZONAs CARGUE EL DATA SET
            var datosZona = from a in contexto.COM_COMISION_BAS_ZONAs
                            where a.COM_ID == Convert.ToDecimal(StrComId)
                            select a;
            foreach (var objZona in datosZona)
            {
                DataRow row = ds.Tables[0].NewRow();
                row["CCB_ID"] = objZona.CCB_ID.ToString();
                row["COM_ID"] = objZona.COM_ID.ToString();
                row["ZON_ID"] = objZona.ZON_ID.ToString();
                row["ZOP_ID"] = objZona.ZOP_ID;
                row["ZOP_CIUDAD"] = objZona.ZOP_CIUDAD;
                row["CTD_ID"] = objZona.CTD_ID;
                ds.Tables[0].Rows.Add(row);
            }


            //SI EXISTEN DATOS DE COM_COMISION_AGENDAs CARGUE EL DATA SET
            var datosAgenda = from a in contexto.COM_COMISION_AGENDAs
                              where a.COM_ID == Convert.ToDecimal(StrComId)
                              select a;
            foreach (var objAgenda in datosAgenda)
            {
                DataRow row = dsAgenda.Tables[0].NewRow();
                row["CCA_ID"] = objAgenda.CCA_ID;
                row["CCA_DESCIPCION"] = objAgenda.CCA_DESCIPCION.ToString();
                row["CCA_FECHA"] = objAgenda.CCA_FECHA.ToString();
                row["CCA_HORA_INICIO"] = objAgenda.CCA_HORA_INICIO;
                row["CC_HORA_FIN"] = objAgenda.CC_HORA_FIN;
                row["ZON_ID"] = objAgenda.ZON_ID;
                row["ZOP_ID"] = objAgenda.ZOP_ID;
                row["COM_ID"] = objAgenda.COM_ID;
                row["ZOP_CIUDAD"] = objAgenda.ZOP_CIUDAD;
                dsAgenda.Tables[0].Rows.Add(row);
            }




        }
        catch (Exception ex)
        {
            ex.Message.ToString();
            //throw;
        }
    }
    #endregion

    #region cargarPersonas
    private void cargarPersonas()
    {
        try
        {
            Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
            var datos = from a in contexto.CON_CONTRATISTAs
                        where a.CCO_TIPO == Convert.ToChar(CCO_TIPO.Value.ToString()) && a.CCO_VIAJA == 1
                        select a;
            if (datos == null) return;
            CCO_ID.DataSource = datos;
            CCO_ID.TextField = "CCO_NOMBRE";
            CCO_ID.ValueField = "CCO_ID";
            CCO_ID.DataBind();
            // ddlDepartamentoOrigen.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("--TODOS--", ""));
        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.Message.ToString();
        }
    }
    #endregion

    #region cargarTipoDePlan
    private void cargarTipoDePlan()
    {
        try
        {
            Model.DataClassesViaticosDataContext contexto = new Model.DataClassesViaticosDataContext(ConfigurationManager.AppSettings["Conn"]);
            var datos = from a in contexto.COM_TIPOs

                        select a;
            if (datos == null) return;
            CTI_ID.DataSource = datos;
            CTI_ID.TextField = "CTI_NOMBRE";
            CTI_ID.ValueField = "CTI_ID";
            CTI_ID.DataBind();
            // ddlDepartamentoOrigen.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("--TODOS--", ""));
        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.Message.ToString();
        }
    }
    #endregion

    #region cargarTipoDestino
    private void cargarTipoDestino()
    {
        try
        {
            Model.DataClassesViaticosDataContext contexto = new Model.DataClassesViaticosDataContext(ConfigurationManager.AppSettings["Conn"]);
            var datos = from a in contexto.COM_TIPO_DESTINOs

                        select a;
            if (datos == null) return;
            CTD_ID.DataSource = datos;
            CTD_ID.TextField = "CTD_NOMBRE";
            CTD_ID.ValueField = "CTD_ID";
            CTD_ID.DataBind();
            // ddlDepartamentoOrigen.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("--TODOS--", ""));
        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.Message.ToString();
        }
    }
    #endregion

    #region cargarRegiones
    private void cargarRegiones()
    {
        try
        {
            Model.DataClassesViaticosDataContext contexto = new Model.DataClassesViaticosDataContext(ConfigurationManager.AppSettings["Conn"]);
            var datos = from a in contexto.COM_REGIONEs

                        select a;
            if (datos == null) return;
            CRE_ID.DataSource = datos;
            CRE_ID.TextField = "CRE_NOMBRE";
            CRE_ID.ValueField = "CRE_ID";
            CRE_ID.DataBind();
            // ddlDepartamentoOrigen.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("--TODOS--", ""));
        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.Message.ToString();
        }
    }
    #endregion

    #region cargarCDPViaticos
    private void cargarCDPViaticos()
    {
        try
        {
            Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
            var datos = from a in contexto.FIN_ACCION_EPEs
                        join b in contexto.SIG_ACCIONs on a.ACC_ID equals b.ACC_ID
                        join c in contexto.SIG_PLAN_ACCIONs on b.PLN_ID equals c.PLN_ID
                        join u in contexto.SIG_ACTIVIDADEs on b.SAC_ID equals u.SAC_ID
                        join t in contexto.SIG_ACTIVIDADES_SUPERIORs on u.SAS_ID equals t.SAS_ID
                        //join d in contexto.BAS_DEPENDENCIAs on c.DEP_ID equals d.DEP_ID
                        //join e in contexto.ADM_PERMISOS_COMISIONE_1s on b.PLN_ID equals e.PLN_ID
                        where a.TPE_ID == 8 && c.PLN_ANO == 2015 && (
                        a.FAE_NUMERO_CDP == "815"
                        || a.FAE_NUMERO_CDP == "915"
                        || a.FAE_NUMERO_CDP == "1015"
                        || a.FAE_NUMERO_CDP == "1115"
                        || a.FAE_NUMERO_CDP == "1215"
                        || a.FAE_NUMERO_CDP == "1315"
                        || a.FAE_NUMERO_CDP == "1415"
                        || a.FAE_NUMERO_CDP == "1515"
                        || a.FAE_NUMERO_CDP == "1615"
                        || a.FAE_NUMERO_CDP == "1715"
                        || a.FAE_NUMERO_CDP == "1815"
                        || a.FAE_NUMERO_CDP == "2015"
                        || a.FAE_NUMERO_CDP == "1915"
                        )
                        // && e.USU_ID == Usuario.UsuId

                        select new
                        {
                            FAE_NUMERO_CDP = a.FAE_NUMERO_CDP.ToString() + " " + t.SAS_NOMBRE.ToString(),
                            a.FAE_ID
                        };
            if (datos == null) return;
            FAE_ID_VIATICOS.DataSource = datos;
            FAE_ID_VIATICOS.TextField = "FAE_NUMERO_CDP";
            FAE_ID_VIATICOS.ValueField = "FAE_ID";
            FAE_ID_VIATICOS.DataBind();
            // ddlDepartamentoOrigen.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("--TODOS--", ""));
        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.Message.ToString();
        }
    }
    #endregion

    #region cargarCDPTiquetes
    private void cargarCDPTiquetes()
    {
        try
        {
            Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
            var datos = from a in contexto.FIN_ACCION_EPEs
                        join b in contexto.SIG_ACCIONs on a.ACC_ID equals b.ACC_ID
                        join c in contexto.SIG_PLAN_ACCIONs on b.PLN_ID equals c.PLN_ID
                        join u in contexto.SIG_ACTIVIDADEs on b.SAC_ID equals u.SAC_ID
                        join t in contexto.SIG_ACTIVIDADES_SUPERIORs on u.SAS_ID equals t.SAS_ID
                        join d in contexto.BAS_DEPENDENCIAs on c.DEP_ID equals d.DEP_ID
                        where a.TPE_ID == 8 && c.PLN_ANO == 2015 && (a.FAE_NUMERO_CDP == "32315")

                        select new
                        {
                            FAE_NUMERO_CDP = a.FAE_NUMERO_CDP.ToString() + " " + t.SAS_NOMBRE.ToString(),
                            a.FAE_ID
                        };
            if (datos == null) return;
            FAE_ID_TIQUETES.DataSource = datos;
            FAE_ID_TIQUETES.TextField = "FAE_NUMERO_CDP";
            FAE_ID_TIQUETES.ValueField = "FAE_ID";
            FAE_ID_TIQUETES.DataBind();
            // ddlDepartamentoOrigen.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("--TODOS--", ""));
        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.Message.ToString();
        }

    }
    #endregion

    #region btnVolver_Click
    protected void btnVolver_Click(object sender, EventArgs e)
    {
        Server.Transfer("ViaticosRegistroViajeProgramadoListado.aspx", true);
    }
    #endregion

    #region ddlDepartamentoOrigen_SelectedIndexChanged
    protected void ddlDepartamentoOrigen_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (ddlDepartamentoOrigen.Value == null) return;
        if (ddlDepartamentoOrigen.Value.ToString() == "") return;
        if (ddlDepartamentoOrigen.Value.ToString() == "0")
        {
            ddlDepartamentoOrigen.Items.Clear();
            return;
        }

        ddlMunicipioOrigen.Items.Clear();
        Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
        var datos = from a in contexto.BAS_ZONAS_GEOGRAFICAs
                    where object.Equals(a.ZON_PADRE_ID, ddlDepartamentoOrigen.Value)
                    select a;
        if (datos == null) return;
        ddlMunicipioOrigen.DataSource = datos;
        ddlMunicipioOrigen.TextField = "ZON_NOMBRE";
        ddlMunicipioOrigen.ValueField = "ZON_ID";
        ddlMunicipioOrigen.DataBind();
    }
    #endregion

    #region ASPxGridViewZonas_RowInserting
    protected void ASPxGridViewZonas_RowInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
    {
        ds = (DataSet)Session["DataSet"];
        ASPxGridView gridView = (ASPxGridView)sender;
        DataTable dataTable = gridView.SettingsDetail.IsDetailGrid ? ds.Tables[1] : ds.Tables[0];
        DataRow row = dataTable.NewRow();
        e.NewValues["CCB_ID"] = GetNewId();
        IDictionaryEnumerator enumerator = e.NewValues.GetEnumerator();
        enumerator.Reset();
        while (enumerator.MoveNext())
            if (enumerator.Key.ToString() != "Count")
                row[enumerator.Key.ToString()] = enumerator.Value;
        gridView.CancelEdit();
        e.Cancel = true;
        dataTable.Rows.Add(row);
    }
    #endregion

    #region GetNewId
    private int GetNewId()
    {
        ds = (DataSet)Session["DataSet"];
        DataTable table = ds.Tables[0];
        if (table.Rows.Count == 0) return 0;
        int max = Convert.ToInt32(table.Rows[0]["CCB_ID"]);
        for (int i = 1; i < table.Rows.Count; i++)
        {
            if (Convert.ToInt32(table.Rows[i]["CCB_ID"]) > max)
                max = Convert.ToInt32(table.Rows[i]["CCB_ID"]);
        }
        return max + 1;
    }
    #endregion

    #region ASPxGridViewZonas_RowUpdating
    protected void ASPxGridViewZonas_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
    {
        ds = (DataSet)Session["DataSet"];
        ASPxGridView gridView = (ASPxGridView)sender;
        DataTable dataTable = gridView.SettingsDetail.IsDetailGrid ? ds.Tables[1] : ds.Tables[0];
        DataRow row = dataTable.Rows.Find(e.Keys[0]);
        IDictionaryEnumerator enumerator = e.NewValues.GetEnumerator();
        enumerator.Reset();
        while (enumerator.MoveNext())
            row[enumerator.Key.ToString()] = enumerator.Value;
        gridView.CancelEdit();
        e.Cancel = true;
    }
    #endregion

    #region ASPxGridViewZonas_RowDeleting
    protected void ASPxGridViewZonas_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
    {
        int i = ASPxGridViewZonas.FindVisibleIndexByKeyValue(e.Keys[ASPxGridViewZonas.KeyFieldName]);
        Control c = ASPxGridViewZonas.FindDetailRowTemplateControl(i, "ASPxGridView2");
        e.Cancel = true;
        ds = (DataSet)Session["DataSet"];
        ds.Tables[0].Rows.Remove(ds.Tables[0].Rows.Find(e.Keys[ASPxGridViewZonas.KeyFieldName]));
    }
    #endregion

    #region FAE_ID_VIATICOS_SelectedIndexChanged
    protected void FAE_ID_VIATICOS_SelectedIndexChanged(object sender, EventArgs e)
    {

        try
        {
            validarDisponibilidadCDPs();
                Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
                var datos = from a in contexto.FIN_ACCION_EPEs
                            join b in contexto.SIG_ACCIONs on a.ACC_ID equals b.ACC_ID
                            join m in contexto.SIG_ACTIVIDADEs on b.SAC_ID equals m.SAC_ID
                            join f in contexto.SIG_ACTIVIDADES_SUPERIORs on m.SAS_ID equals f.SAS_ID
                            join c in contexto.SIG_PLAN_ACCIONs on b.PLN_ID equals c.PLN_ID
                            join d in contexto.BAS_DEPENDENCIAs on c.DEP_ID equals d.DEP_ID
                            where a.FAE_ID == Convert.ToDecimal(FAE_ID_VIATICOS.Value)

                            select new
                            {
                                a.FAE_NUMEROEPE,
                                a.FAE_ID,
                                d.DEP_NOMBRE,
                                c.PLN_NOMBRE,
                                f.SAS_NOMBRE,
                                c.PLN_ID,
                                b.ACC_ID
                            };
                if (datos == null) return;
                else
                {
                    foreach (var v in datos)
                    {
                        lblDependencia.Text = v.DEP_NOMBRE;
                        lblRubro.Text = v.SAS_NOMBRE;
                        StrPlnId = v.PLN_ID.ToString();
                        Session["accId"] = v.ACC_ID;
                    }
                }
            
            // ddlDepartamentoOrigen.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("--TODOS--", ""));
        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.Message.ToString();
        }
    }
    #endregion

    #region FAE_ID_TIQUETES_SelectedIndexChanged
    protected void FAE_ID_TIQUETES_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {
            Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
            var datos = from a in contexto.FIN_ACCION_EPEs
                        join b in contexto.SIG_ACCIONs on a.ACC_ID equals b.ACC_ID
                        join m in contexto.SIG_ACTIVIDADEs on b.SAC_ID equals m.SAC_ID
                        join f in contexto.SIG_ACTIVIDADES_SUPERIORs on m.SAS_ID equals f.SAS_ID
                        join c in contexto.SIG_PLAN_ACCIONs on b.PLN_ID equals c.PLN_ID
                        join d in contexto.BAS_DEPENDENCIAs on c.DEP_ID equals d.DEP_ID
                        where a.FAE_ID == Convert.ToDecimal(FAE_ID_TIQUETES.Value)

                        select new
                        {
                            a.FAE_NUMEROEPE,
                            a.FAE_ID,
                            d.DEP_NOMBRE,
                            f.SAS_NOMBRE,
                            c.PLN_NOMBRE
                        };
            if (datos == null) return;
            else
            {
                foreach (var v in datos)
                {
                    lblDependenciaTiquete.Text = v.DEP_NOMBRE;
                    lblRubroTiquete.Text = v.SAS_NOMBRE;
                }
            }
            // ddlDepartamentoOrigen.Items.Insert(0, new DevExpress.Web.ASPxEditors.ListEditItem("--TODOS--", ""));
        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.Message.ToString();
        }
    }
    #endregion

    #region ASPxGridViewAgenda_RowInserting
    protected void ASPxGridViewAgenda_RowInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
    {
        dsAgenda = (DataSet)Session["DataSetAgenda"];
        ASPxGridView gridView = (ASPxGridView)sender;
        DataTable dataTable = gridView.SettingsDetail.IsDetailGrid ? dsAgenda.Tables[1] : dsAgenda.Tables[0];
        DataRow row = dataTable.NewRow();
        e.NewValues["CCA_ID"] = GetNewIdAgenda();
        IDictionaryEnumerator enumerator = e.NewValues.GetEnumerator();
        enumerator.Reset();
        while (enumerator.MoveNext())
            if (enumerator.Key.ToString() != "Count")
                row[enumerator.Key.ToString()] = enumerator.Value;
        gridView.CancelEdit();
        e.Cancel = true;
        dataTable.Rows.Add(row);
    }
    #endregion

    #region GetNewIdAgenda
    private int GetNewIdAgenda()
    {
        dsAgenda = (DataSet)Session["DataSetAgenda"];
        DataTable table = dsAgenda.Tables[0];
        if (table.Rows.Count == 0) return 0;
        int max = Convert.ToInt32(table.Rows[0]["CCA_ID"]);
        for (int i = 1; i < table.Rows.Count; i++)
        {
            if (Convert.ToInt32(table.Rows[i]["CCA_ID"]) > max)
                max = Convert.ToInt32(table.Rows[i]["CCA_ID"]);
        }
        return max + 1;
    }
    #endregion

    #region ASPxGridViewAgenda_RowUpdating
    protected void ASPxGridViewAgenda_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
    {
        dsAgenda = (DataSet)Session["DataSetAgenda"];
        ASPxGridView gridView = (ASPxGridView)sender;
        DataTable dataTable = gridView.SettingsDetail.IsDetailGrid ? dsAgenda.Tables[1] : dsAgenda.Tables[0];
        DataRow row = dataTable.Rows.Find(e.Keys[0]);
        IDictionaryEnumerator enumerator = e.NewValues.GetEnumerator();
        enumerator.Reset();
        while (enumerator.MoveNext())
            row[enumerator.Key.ToString()] = enumerator.Value;
        gridView.CancelEdit();
        e.Cancel = true;
    }
    #endregion

    #region ASPxGridViewAgenda_RowDeleting
    protected void ASPxGridViewAgenda_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
    {
        int i = ASPxGridViewAgenda.FindVisibleIndexByKeyValue(e.Keys[ASPxGridViewAgenda.KeyFieldName]);
        Control c = ASPxGridViewAgenda.FindDetailRowTemplateControl(i, "ASPxGridView2");
        e.Cancel = true;
        dsAgenda = (DataSet)Session["DataSetAgenda"];
        dsAgenda.Tables[0].Rows.Remove(dsAgenda.Tables[0].Rows.Find(e.Keys[ASPxGridViewAgenda.KeyFieldName]));
    }
    #endregion

    #region btnGuardar_Click
    protected void btnGuardar_Click(object sender, EventArgs e)
    {
        guardar();
    }
    #endregion


    //Validar Cupo Comisiones
    private bool validarDisponibilidadCDPs()
    {
        Model.DataClassesViaticosDataContext contexto = new Model.DataClassesViaticosDataContext(ConfigurationManager.AppSettings["Conn"]);
            Model.DataClassesContratosDataContext contexto2 = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
            bool boolBandera = false;
        var datosComisiones = from g in contexto.COM_COMISIONs
                              where g.FAE_ID_VIATICOS == Convert.ToDecimal(FAE_ID_VIATICOS.Value.ToString())
                              group g by g.FAE_ID_VIATICOS into p
                              select new { Total = p.Sum(g => (g.COM_VIATICOS_VALOR_TOTAL + g.COM_VIATICOS_VALOR_OTROS_TRANS_TERRESTRE)) };
        foreach (var w in datosComisiones)
        {
            var datosCDPS = from a in contexto2.FIN_ACCION_EPEs
                            where
                                a.FAE_ID == Convert.ToDecimal(FAE_ID_VIATICOS.Value.ToString())
                            select new
                            {
                                a.FAE_VALOR_EPE,
                                a.FAE_ID
                            };
            foreach (var i in datosCDPS)
            {
                decimal decValor =0;
                if (COM_VIATICOS_VALOR_TOTAL.Text != "")
                    decValor = Convert.ToDecimal(COM_VIATICOS_VALOR_TOTAL.Text);

                lblSaldoCdp.Text = (i.FAE_VALOR_EPE - (w.Total + decValor)).ToString();
                if ((w.Total + decValor) <= i.FAE_VALOR_EPE)
                    boolBandera = true;
                else
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_TotalCDP", "alert('El valor del CDP no tiene disponibilidad para esta comisión, gracias');", true);
           
            }
        }
        return boolBandera;
    }

    //Validar Cupo Comisiones
    private bool validarDisponibilidadCDPsGestionHumana()
    {
        Model.DataClassesViaticosDataContext contexto = new Model.DataClassesViaticosDataContext(ConfigurationManager.AppSettings["Conn"]);
        Model.DataClassesContratosDataContext contexto2 = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
        bool boolBandera = false;
        var datosComisiones = from g in contexto.COM_COMISIONs
                              where g.FAE_ID_VIATICOS == Convert.ToDecimal(FAE_ID_VIATICOS.Value.ToString())
                              group g by g.FAE_ID_VIATICOS into p
                              select new { Total = p.Sum(g => (g.COM_VIATICOS_VALOR_TOTAL + g.COM_VIATICOS_VALOR_OTROS_TRANS_TERRESTRE)) };
        foreach (var w in datosComisiones)
        {
            var datosCDPS = from a in contexto2.FIN_ACCION_EPEs
                            where
                                a.FAE_ID == Convert.ToDecimal(FAE_ID_VIATICOS.Value.ToString())
                            select new
                            {
                                a.FAE_VALOR_EPE,
                                a.FAE_ID
                            };
            foreach (var i in datosCDPS)
            {
                decimal decValor = 0;
                if (txtValorTransporteTerrestre.Text != "")
                    decValor = Convert.ToDecimal(txtValorTransporteTerrestre.Text);

                lblSaldoCdp.Text = (i.FAE_VALOR_EPE - (w.Total + decValor)).ToString();
                if ((w.Total + decValor) <= i.FAE_VALOR_EPE)
                    boolBandera = true;
                else
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_TotalCDP", "alert('El valor del CDP no tiene disponibilidad para esta comisión, gracias');", true);

            }
        }
        return boolBandera;
    }

    #region guardar
    private void guardar()
    {
        try
        {
            if (validarDisponibilidadCDPs())
            {
                //CONTRATOS
                Model.DataClassesViaticosDataContext contexto = new Model.DataClassesViaticosDataContext(ConfigurationManager.AppSettings["Conn"]);

                if (StrComId == "")
                {

                    //verificarPermisosBotones(0);
                    Model.COM_COMISION v = new Model.COM_COMISION();
                    v.COE_ID = 0;

                    v.CTI_ID = Convert.ToDecimal(CTI_ID.Value.ToString());


                    DateTime objFechaSalida = Convert.ToDateTime(COM_FECHA_SALIDA.Text);
                    v.COM_FECHA_SALIDA = objFechaSalida;

                    DateTime objFechaRegreso = Convert.ToDateTime(COM_FECHA_REGRESO.Text);
                    v.COM_FECHA_REGRESO = objFechaRegreso;

                    v.COM_TOTAL_DIAS = Convert.ToDecimal(COM_TOTAL_DIAS.Text);
                    v.CCO_ID = Convert.ToDecimal(CCO_ID.Value);

                    v.COM_VIATICOS_DESCIPCION = COM_VIATICOS_DESCIPCION.Text;
                    v.FAE_ID_VIATICOS = Convert.ToDecimal(FAE_ID_VIATICOS.Value);
                    v.COM_TIQUERES_DESCIPCION = COM_TIQUERES_DESCIPCION.Text;
                    v.FAE_ID_TIQUETES = Convert.ToDecimal(FAE_ID_TIQUETES.Value);
                    v.COM_VIATICOS_VALOR_ALOJAMIENTO = Convert.ToDecimal(COM_VIATICOS_VALOR_ALOJAMIENTO.Text);
                    v.COM_VIATICOS_VALOR_TRANSPORTE_LOCAL = Convert.ToDecimal(COM_VIATICOS_VALOR_TRANSPORTE_LOCAL.Text);
                    v.COM_VIATICOS_VALOR_MANUTENCION = Convert.ToDecimal(COM_VIATICOS_VALOR_MANUTENCION.Text);
                    v.COM_VIATICOS_VALOR_OTROS_TRANS_TERRESTRE = Convert.ToDecimal(COM_VIATICOS_VALOR_OTROS_TRANS_TERRESTRE.Text);
                    v.COM_VIATICOS_VALOR_OTROS_TRANS_FLUVIAL = Convert.ToDecimal(COM_VIATICOS_VALOR_OTROS_TRANS_FLUVIAL.Text);
                    v.COM_VIATICOS_VALOR_OTROS_PEAJE_GASOLINA = Convert.ToDecimal(COM_VIATICOS_VALOR_OTROS_PEAJE_GASOLINA.Text);
                    v.COM_VIATICOS_VALOR_TOTAL = Convert.ToDecimal(COM_VIATICOS_VALOR_TOTAL.Text);
                    v.COM_ACTIVIDAD_GENERA_DESPLAZAMIENTO = COM_ACTIVIDAD_GENERA_DESPLAZAMIENTO.Text;
                    v.COM_OBJETO_PLAN_VIAJE = COM_OBJETO_PLAN_VIAJE.Text;
                    v.COM_JUSTIFICACION_VIAJE = COM_JUSTIFICACION_VIAJE.Text;
                    v.COM_LOGROS_ESPERADOS = COM_LOGROS_ESPERADOS.Text;
                    v.COM_RESUMEN = COM_RESUMEN.Text;
                    v.COM_CONTENIDO = COM_CONTENIDO.Text;
                    v.COM_CONCLUSIONES = COM_CONCLUSIONES.Text;
                    v.COM_RECOMENDACIONES = COM_RECOMENDACIONES.Text;
                    v.COM_CUMPLIDO_INFORME = COM_CUMPLIDO_INFORME.Text;
                    v.COM_RECIBOS_TRANSPORTE_TERRESTRE = COM_RECIBOS_TRANSPORTE_TERRESTRE.Text;
                    v.COM_RECIBOS_TRANSPORTE_FLUVIAL = COM_RECIBOS_TRANSPORTE_FLUVIAL.Text;
                    v.COM_OTROS = COM_OTROS.Text;
                    v.ZON_ID_ORIGEN = ddlMunicipioOrigen.Value.ToString();
                    v.CTD_ID = Convert.ToDecimal(CTD_ID.Value);
                    v.USU_ID = Usuario.UsuId;
                    v.COM_FECHA_REGISTRO = DateTime.Now;

                    v.COM_ENTIDAD_SUMINISTRA_VIATICOS = COM_ENTIDAD_SUMINISTRA_VIATICOS.Value.ToString();
                    v.COM_ENTIDAD_SUMINISTRA_TIQUETES = COM_ENTIDAD_SUMINISTRA_TIQUETES.Value.ToString();


                    if (trRegion.Visible)
                        if (!String.IsNullOrEmpty(CRE_ID.Value.ToString()))
                            v.CRE_ID = Convert.ToDecimal(CRE_ID.Value.ToString());
                    if (trDescripcionViaje.Visible)
                        v.COM_JUSTIFICACION_VIAJE_NO_PROGRAMADO = COM_JUSTIFICACION_VIAJE_NO_PROGRAMADO.Text;

                    contexto.COM_COMISIONs.InsertOnSubmit(v);
                    contexto.SubmitChanges();
                    StrComId = v.COM_ID.ToString();

                    //Salvar los Datos de la Zona
                    foreach (DataRow row in ds.Tables[0].Rows)
                    {
                        Model.COM_COMISION_BAS_ZONA objZona = new Model.COM_COMISION_BAS_ZONA();
                        objZona.COM_ID = Convert.ToDecimal(StrComId);
                        objZona.ZON_ID = row["ZON_ID"].ToString();
                        objZona.ZOP_ID = Convert.ToInt32(row["ZOP_ID"].ToString());
                        objZona.ZOP_CIUDAD = row["ZOP_CIUDAD"].ToString();
                        objZona.CTD_ID = Convert.ToDecimal(row["CTD_ID"].ToString());
                        //objZona.CCB_ORIGEN = Convert.ToDecimal(row["CCB_ORIGEN"].ToString());
                        contexto.COM_COMISION_BAS_ZONAs.InsertOnSubmit(objZona);
                        contexto.SubmitChanges();
                    }


                    //Salvar los Datos de la Agenda
                    foreach (DataRow row in dsAgenda.Tables[0].Rows)
                    {
                        Model.COM_COMISION_AGENDA objAgenda = new Model.COM_COMISION_AGENDA();
                        objAgenda.COM_ID = Convert.ToDecimal(StrComId);
                        objAgenda.CCA_DESCIPCION = row["CCA_DESCIPCION"].ToString();

                        DateTime objFecha = Convert.ToDateTime(row["CCA_FECHA"].ToString());
                        objAgenda.CCA_FECHA = objFecha;
                        objAgenda.ZOP_CIUDAD = row["ZOP_CIUDAD"].ToString();
                        //TimeSpan objTimeSpan = new TimeSpan();
                        //objTimeSpan =  row["CCA_HORA_INICIO"].ToString();

                        DateTime obj = Convert.ToDateTime(row["CCA_HORA_INICIO"].ToString());
                        TimeSpan objTimeSpan = new TimeSpan(0, obj.Hour, obj.Minute, obj.Second, obj.Millisecond);

                        objAgenda.CCA_HORA_INICIO = objTimeSpan;

                        obj = Convert.ToDateTime(row["CC_HORA_FIN"].ToString());
                        objTimeSpan = new TimeSpan(0, obj.Hour, obj.Minute, obj.Second, obj.Millisecond);
                        objAgenda.CC_HORA_FIN = objTimeSpan;
                        objAgenda.ZON_ID = row["ZON_ID"].ToString();
                        objAgenda.ZOP_ID = Convert.ToInt32(row["ZOP_ID"].ToString());
                        contexto.COM_COMISION_AGENDAs.InsertOnSubmit(objAgenda);
                        contexto.SubmitChanges();
                    }

                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_parteA", "alert('La información se guardo exitosamente');", true);
                }
                else
                {
                    var datos = from a in contexto.COM_COMISIONs
                                where a.COM_ID == Convert.ToDecimal(StrComId.ToString())
                                select a;
                    foreach (var v in datos)
                    {
                        v.CTI_ID = Convert.ToDecimal(CTI_ID.Value.ToString());
                        v.COM_JUSTIFICACION_VIAJE_NO_PROGRAMADO = COM_JUSTIFICACION_VIAJE_NO_PROGRAMADO.Text;

                        DateTime objFechaSalida = Convert.ToDateTime(COM_FECHA_SALIDA.Text);
                        v.COM_FECHA_SALIDA = objFechaSalida;

                        DateTime objFechaRegreso = Convert.ToDateTime(COM_FECHA_REGRESO.Text);
                        v.COM_FECHA_REGRESO = objFechaRegreso;

                        v.COM_TOTAL_DIAS = Convert.ToDecimal(COM_TOTAL_DIAS.Text);
                        v.CCO_ID = Convert.ToDecimal(CCO_ID.Value);

                        v.COM_VIATICOS_DESCIPCION = COM_VIATICOS_DESCIPCION.Text;
                        v.FAE_ID_VIATICOS = Convert.ToDecimal(FAE_ID_VIATICOS.Value);
                        v.COM_TIQUERES_DESCIPCION = COM_TIQUERES_DESCIPCION.Text;
                        v.FAE_ID_TIQUETES = Convert.ToDecimal(FAE_ID_TIQUETES.Value);
                        v.COM_VIATICOS_VALOR_ALOJAMIENTO = Convert.ToDecimal(COM_VIATICOS_VALOR_ALOJAMIENTO.Text);
                        v.COM_VIATICOS_VALOR_TRANSPORTE_LOCAL = Convert.ToDecimal(COM_VIATICOS_VALOR_TRANSPORTE_LOCAL.Text);
                        v.COM_VIATICOS_VALOR_MANUTENCION = Convert.ToDecimal(COM_VIATICOS_VALOR_MANUTENCION.Text);
                        v.COM_VIATICOS_VALOR_OTROS_TRANS_TERRESTRE = Convert.ToDecimal(COM_VIATICOS_VALOR_OTROS_TRANS_TERRESTRE.Text);
                        v.COM_VIATICOS_VALOR_OTROS_TRANS_FLUVIAL = Convert.ToDecimal(COM_VIATICOS_VALOR_OTROS_TRANS_FLUVIAL.Text);
                        v.COM_VIATICOS_VALOR_OTROS_PEAJE_GASOLINA = Convert.ToDecimal(COM_VIATICOS_VALOR_OTROS_PEAJE_GASOLINA.Text);
                        v.COM_VIATICOS_VALOR_TOTAL = Convert.ToDecimal(COM_VIATICOS_VALOR_TOTAL.Text);
                        v.COM_ACTIVIDAD_GENERA_DESPLAZAMIENTO = COM_ACTIVIDAD_GENERA_DESPLAZAMIENTO.Text;
                        v.COM_OBJETO_PLAN_VIAJE = COM_OBJETO_PLAN_VIAJE.Text;
                        v.COM_JUSTIFICACION_VIAJE = COM_JUSTIFICACION_VIAJE.Text;
                        v.COM_LOGROS_ESPERADOS = COM_LOGROS_ESPERADOS.Text;
                        v.COM_RESUMEN = COM_RESUMEN.Text;
                        v.COM_CONTENIDO = COM_CONTENIDO.Text;
                        v.COM_CONCLUSIONES = COM_CONCLUSIONES.Text;
                        v.COM_RECOMENDACIONES = COM_RECOMENDACIONES.Text;
                        v.COM_CUMPLIDO_INFORME = COM_CUMPLIDO_INFORME.Text;
                        v.COM_RECIBOS_TRANSPORTE_TERRESTRE = COM_RECIBOS_TRANSPORTE_TERRESTRE.Text;
                        v.COM_RECIBOS_TRANSPORTE_FLUVIAL = COM_RECIBOS_TRANSPORTE_FLUVIAL.Text;
                        v.COM_OTROS = COM_OTROS.Text;
                        v.ZON_ID_ORIGEN = ddlMunicipioOrigen.Value.ToString();
                        v.COE_ID = 0;

                        v.COM_ENTIDAD_SUMINISTRA_VIATICOS = COM_ENTIDAD_SUMINISTRA_VIATICOS.Value.ToString();
                        v.COM_ENTIDAD_SUMINISTRA_TIQUETES = COM_ENTIDAD_SUMINISTRA_TIQUETES.Value.ToString();

                        if (trRegion.Visible)
                            if (!String.IsNullOrEmpty(CRE_ID.Value.ToString()))
                                v.CRE_ID = Convert.ToDecimal(CRE_ID.Value.ToString());
                        if (trDescripcionViaje.Visible)
                            v.COM_JUSTIFICACION_VIAJE_NO_PROGRAMADO = COM_JUSTIFICACION_VIAJE_NO_PROGRAMADO.Text;


                        contexto.SubmitChanges();

                        var datosZona = from u in contexto.COM_COMISION_BAS_ZONAs
                                        where u.COM_ID == Convert.ToDecimal(StrComId)
                                        select u;

                        //borrar los datos de la zona
                        foreach (var vi in datosZona)
                        {
                            contexto.COM_COMISION_BAS_ZONAs.DeleteOnSubmit(vi);
                            contexto.SubmitChanges();
                        }

                        //Salvar los datos de la zona
                        foreach (DataRow row in ds.Tables[0].Rows)
                        {
                            Model.COM_COMISION_BAS_ZONA objZona = new Model.COM_COMISION_BAS_ZONA();
                            objZona.COM_ID = Convert.ToDecimal(StrComId);
                            objZona.ZON_ID = row["ZON_ID"].ToString();
                            objZona.ZOP_ID = Convert.ToInt32(row["ZOP_ID"].ToString());
                            objZona.ZOP_CIUDAD = row["ZOP_CIUDAD"].ToString();
                            objZona.CTD_ID = Convert.ToDecimal(row["CTD_ID"].ToString());
                            //objZona.CCB_ORIGEN = Convert.ToDecimal(row["CCB_ORIGEN"].ToString());
                            contexto.COM_COMISION_BAS_ZONAs.InsertOnSubmit(objZona);
                            contexto.SubmitChanges();
                        }


                        var datosAgenda = from u in contexto.COM_COMISION_AGENDAs
                                          where u.COM_ID == Convert.ToDecimal(StrComId)
                                          select u;

                        //borrar los datos de la zona
                        foreach (var vi in datosAgenda)
                        {
                            contexto.COM_COMISION_AGENDAs.DeleteOnSubmit(vi);
                            contexto.SubmitChanges();
                        }
                        //Salvar los Datos de la Agenda
                        foreach (DataRow row in dsAgenda.Tables[0].Rows)
                        {
                            Model.COM_COMISION_AGENDA objAgenda = new Model.COM_COMISION_AGENDA();
                            objAgenda.COM_ID = Convert.ToDecimal(StrComId);
                            objAgenda.CCA_DESCIPCION = row["CCA_DESCIPCION"].ToString();

                            DateTime objFecha = Convert.ToDateTime(row["CCA_FECHA"].ToString());
                            objAgenda.CCA_FECHA = objFecha;
                            objAgenda.ZOP_CIUDAD = row["ZOP_CIUDAD"].ToString();
                            //TimeSpan objTimeSpan = new TimeSpan();
                            //objTimeSpan =  row["CCA_HORA_INICIO"].ToString();

                            DateTime obj = Convert.ToDateTime(row["CCA_HORA_INICIO"].ToString());
                            TimeSpan objTimeSpan = new TimeSpan(0, obj.Hour, obj.Minute, obj.Second, obj.Millisecond);

                            objAgenda.CCA_HORA_INICIO = objTimeSpan;

                            obj = Convert.ToDateTime(row["CC_HORA_FIN"].ToString());
                            objTimeSpan = new TimeSpan(0, obj.Hour, obj.Minute, obj.Second, obj.Millisecond);
                            objAgenda.CC_HORA_FIN = objTimeSpan;
                            objAgenda.ZON_ID = row["ZON_ID"].ToString();
                            objAgenda.ZOP_ID = Convert.ToInt32(row["ZOP_ID"].ToString());
                            contexto.COM_COMISION_AGENDAs.InsertOnSubmit(objAgenda);
                            contexto.SubmitChanges();
                        }
                    }

                    Session["CCO_ID"] = CCO_ID.Value.ToString();
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_parteA", "alert('La información se guardo exitosamente');", true);
                }
            }
        }
        catch (Exception ex)
        {
            lblMensaje.Text = ex.Message.ToString();
        }
    
    }
    #endregion

    #region ASPxGridViewAgenda_ParseValue
    protected void ASPxGridViewAgenda_ParseValue(object sender, DevExpress.Web.Data.ASPxParseValueEventArgs e)
    {
        //DateTime obj;
        //TimeSpan objTimeSpan
        //if (e.FieldName == "CCA_HORA_INICIO" || e.FieldName == "CC_HORA_FIN") // check for the pertinent fields: is this case all that are not the Oid...
        //{
        //    obj = Convert.ToDateTime(e.Value);
        //    e.Value = new TimeSpan(0, obj.Hour, obj.Minute, obj.Second, obj.Millisecond);
        //}



        //  e.Value = (TimeSpan) e.Value;

    }
    #endregion

    #region CTI_ID_SelectedIndexChanged
    protected void CTI_ID_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (CTI_ID.Value.ToString() == "2")
            trDescripcionViaje.Visible = true;
        else
            trDescripcionViaje.Visible = false;
    }
    #endregion

    #region CTD_ID_SelectedIndexChanged
    protected void CTD_ID_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (CTD_ID.Value.ToString() == "2")
        {
            trRegion.Visible = true;
            reqRegion.Enabled = true;
        }
        else
        {
            trRegion.Visible = false;
            reqRegion.Enabled = false;
        }
    }
    #endregion

    #region CCO_ID_SelectedIndexChanged
    protected void CCO_ID_SelectedIndexChanged(object sender, EventArgs e)
    {

        calcularViaticos();
    }
    #endregion

    #region calcularViaticos
    private void calcularViaticos()
    {
        if (CCO_ID.Value != null)
            try
            {

                //Sueldo Contratista
                decimal decSueldo = 0;
                decimal decViaticosDiarios = 0;
                Model.DataClassesContratosDataContext contexto = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);
                Model.DataClassesViaticosDataContext contextoViaticos = new Model.DataClassesViaticosDataContext(ConfigurationManager.AppSettings["Conn"]);

                if (CCO_TIPO.Value.ToString() == "C")
                {
                    var datos = from a in contexto.CON_CONTRATISTAs
                                join b in contexto.CON_CONTRATACION on a.CCO_ID equals b.CCO_ID
                                where a.CCO_ID == Convert.ToDecimal(CCO_ID.Value.ToString()) && b.CTT_ANO == "2015"
                                select new
                                {
                                    b.CTT_VALOR_CONTRATO_MENSUAL
                                };

                    foreach (var v in datos)
                    {
                        decSueldo = Convert.ToDecimal(v.CTT_VALOR_CONTRATO_MENSUAL) * Convert.ToDecimal(0.7);
                    }
                }
                else if (CCO_TIPO.Value.ToString() == "F")
                {
                    var datos = from a in contexto.CON_CONTRATISTAs

                                where a.CCO_ID == Convert.ToDecimal(CCO_ID.Value.ToString())
                                select new
                                {
                                    a.CCO_SUELDO_FUNCIONARIO
                                };

                    foreach (var v in datos)
                    {
                        decSueldo = Convert.ToDecimal(v.CCO_SUELDO_FUNCIONARIO);
                    }
                }



                //buscar en en que rango de valores esta el sueldo de la persona
                if (CTD_ID.Value != null)
                {

                    var DatosRangos = from a in contextoViaticos.COM_BASE_LIQUIDACIONs
                                      where a.CTD_ID == Convert.ToDecimal(CTD_ID.Value.ToString())
                                      select a;
                    //

                    if (CTD_ID.Value.ToString() != "1")
                    {
                        DatosRangos = from a in contextoViaticos.COM_BASE_LIQUIDACIONs
                                      where a.CTD_ID == Convert.ToDecimal(CTD_ID.Value.ToString()) && a.CRE_ID == Convert.ToDecimal(CRE_ID.Value)

                                      select a;
                        foreach (var v in DatosRangos)
                        {
                            if (decSueldo > v.CBL_RANGO_MINIMO && decSueldo < v.CBL_RANGO_MAXIMO)
                                decViaticosDiarios = Convert.ToDecimal(v.CBL_MONTO_VIATICOS_DIARIOS);

                        }
                    }
                    else
                    {
                        DatosRangos = from a in contextoViaticos.COM_BASE_LIQUIDACIONs
                                      where a.CTD_ID == 1

                                      select a;
                        foreach (var v in DatosRangos)
                        {
                            if (decSueldo > v.CBL_RANGO_MINIMO && decSueldo < v.CBL_RANGO_MAXIMO)
                                decViaticosDiarios = Convert.ToDecimal(v.CBL_MONTO_VIATICOS_DIARIOS);

                        }
                    }

                    COM_VIATICOS_VALOR_ALOJAMIENTO.Text = Convert.ToString(Math.Ceiling(decViaticosDiarios * Convert.ToDecimal(0.5) * Convert.ToDecimal(COM_TOTAL_DIAS.Text)));
                    COM_VIATICOS_VALOR_TRANSPORTE_LOCAL.Text = Convert.ToString(Math.Ceiling(decViaticosDiarios * Convert.ToDecimal(0.1) * Convert.ToDecimal(COM_TOTAL_DIAS.Text)));
                    COM_VIATICOS_VALOR_MANUTENCION.Text = Convert.ToString(Math.Ceiling(decViaticosDiarios * Convert.ToDecimal(0.4) * Convert.ToDecimal(COM_TOTAL_DIAS.Text)));
                    if (COM_TOTAL_DIAS.Text != "")
                        COM_VIATICOS_VALOR_TOTAL.Text = Convert.ToString(Math.Ceiling(decViaticosDiarios * Convert.ToDecimal(COM_TOTAL_DIAS.Text)));

                    if (COM_ENTIDAD_SUMINISTRA_VIATICOS.Value != "A")
                    {
                        COM_VIATICOS_VALOR_ALOJAMIENTO.Text = "0";
                        COM_VIATICOS_VALOR_TRANSPORTE_LOCAL.Text = "0";
                        COM_VIATICOS_VALOR_MANUTENCION.Text = "0";
                        COM_VIATICOS_VALOR_TOTAL.Text = "0";
                    }


                }
                //llenar los campos de viaticos

            }
            catch (Exception ex)
            {

                lblMensaje.Text = ex.Message.ToString();
            }
    }
    #endregion

    #region CalculoFechas
    protected void COM_FECHA_REGRESO_TextChanged(object sender, EventArgs e)
    {
        calculoFechas();
    }

    protected void COM_FECHA_SALIDA_TextChanged(object sender, EventArgs e)
    {
        calculoFechas();
    }

    private void calculoFechas()
    {


        if (COM_FECHA_SALIDA.Text == "" || COM_FECHA_REGRESO.Text == "") return;
        DateTime oldDate = Convert.ToDateTime(COM_FECHA_SALIDA.Text);
        DateTime newDate = Convert.ToDateTime(COM_FECHA_REGRESO.Text);

        // Difference in days, hours, and minutes.
        TimeSpan ts = newDate - oldDate;
        if (ts.Days == 0)
            COM_TOTAL_DIAS.Text = "0,5";
        else
            COM_TOTAL_DIAS.Text = (ts.Days + 0.5).ToString();
        if (CCO_ID.Value != "")
            calcularViaticos();

    }
    #endregion

    #region verificarPermisosBotones

    private void verificarPermisosBotones(int intPermisoEstadoEP)
    {
        switch (intPermisoEstadoEP)
        {
            case 0:
                btnGuardar.Enabled = true;
                btnGuardar.CssClass = "boton";

                btnIniciarProceso.Enabled = true;
                btnIniciarProceso.CssClass = "boton";

                btnGestionHumana.Enabled = false;
                btnGestionHumana.CssClass = "botonInactivo";

                btnCoordinadorProyecto.Enabled = false;
                btnCoordinadorProyecto.CssClass = "botonInactivo";

                btnPlaneacion.Enabled = false;
                btnPlaneacion.CssClass = "botonInactivo";


                btnDirector.Enabled = false;
                btnDirector.CssClass = "botonInactivo";

                btnFinanciera.Enabled = false;
                btnFinanciera.CssClass = "botonInactivo";


                btnImprimirResolucion.Enabled = false;
                btnImprimirResolucion.CssClass = "botonInactivo";

                btnRechazar.Enabled = false;
                btnRechazar.CssClass = "botonInactivo";

                btnImprimirReporteFuncionarios.Enabled = false;
                btnImprimirReporteFuncionarios.CssClass = "botonInactivo";

                btnTiquetes.Enabled = false;
                btnTiquetes.CssClass = "botonInactivo";

                ASPxRoundPanel1.TabIndex = 0;

                ASPxRoundPanel1.Enabled = true;
                ASPxRoundPanel5.Enabled = false;

                //INFORME

                tnIniciarProcesoInforme.Enabled = true;
                tnIniciarProcesoInforme.CssClass = "boton";

                btnVBCoordinadorInforme.Enabled = false;
                tnIniciarProcesoInforme.CssClass = "botonInactivo";

                btnVBFinancieraInforme.Enabled = false;
                btnVBFinancieraInforme.CssClass = "botonInactivo";

                btnRechazarInforme.Enabled = false;
                btnRechazarInforme.CssClass = "botonInactivo";

                btnImprimirInforme.Enabled = false;
                btnImprimirInforme.CssClass = "botonInactivo";

                btnGuardarInforme.Enabled = false;


                break;
            case 2:
                btnGuardar.Enabled = false;
                btnGuardar.CssClass = "botonInactivo";

                btnIniciarProceso.Enabled = false;
                btnIniciarProceso.CssClass = "botonInactivo";

                btnGestionHumana.Enabled = true;
                btnGestionHumana.CssClass = "boton";

                btnCoordinadorProyecto.Enabled = false;
                btnCoordinadorProyecto.CssClass = "botonInactivo";

                btnPlaneacion.Enabled = false;
                btnPlaneacion.CssClass = "botonInactivo";


                btnDirector.Enabled = false;
                btnDirector.CssClass = "botonInactivo";

                btnFinanciera.Enabled = false;
                btnFinanciera.CssClass = "botonInactivo";


                btnImprimirResolucion.Enabled = false;
                btnImprimirResolucion.CssClass = "botonInactivo";

                btnRechazar.Enabled = true;
                btnRechazar.CssClass = "botonInactivo";

                btnImprimirReporteFuncionarios.Enabled = false;
                btnImprimirReporteFuncionarios.CssClass = "botonInactivo";

                btnTiquetes.Enabled = false;
                btnTiquetes.CssClass = "botonInactivo";


                //ASPxRoundPanel1.Enabled = false;
                ASPxRoundPanel5.Enabled = false;

                //INFORME

                tnIniciarProcesoInforme.Enabled = true;
                tnIniciarProcesoInforme.CssClass = "boton";

                btnVBCoordinadorInforme.Enabled = false;
                tnIniciarProcesoInforme.CssClass = "botonInactivo";

                btnVBFinancieraInforme.Enabled = false;
                btnVBFinancieraInforme.CssClass = "botonInactivo";

                btnRechazarInforme.Enabled = false;
                btnRechazarInforme.CssClass = "botonInactivo";

                btnImprimirInforme.Enabled = false;
                btnImprimirInforme.CssClass = "botonInactivo";

                btnGuardarInforme.Enabled = false;


                break;
            case 3:
                btnGuardar.Enabled = false;
                btnGuardar.CssClass = "botonInactivo";

                btnIniciarProceso.Enabled = false;
                btnIniciarProceso.CssClass = "botonInactivo";

                btnGestionHumana.Enabled = false;
                btnGestionHumana.CssClass = "botonInactivo";

                btnCoordinadorProyecto.Enabled = true;
                btnCoordinadorProyecto.CssClass = "boton";

                btnPlaneacion.Enabled = false;
                btnPlaneacion.CssClass = "botonInactivo";


                btnDirector.Enabled = false;
                btnDirector.CssClass = "botonInactivo";

                btnFinanciera.Enabled = false;
                btnFinanciera.CssClass = "botonInactivo";


                btnImprimirResolucion.Enabled = false;
                btnImprimirResolucion.CssClass = "botonInactivo";

                btnRechazar.Enabled = true;
                btnRechazar.CssClass = "botonInactivo";

                btnImprimirReporteFuncionarios.Enabled = false;
                btnImprimirReporteFuncionarios.CssClass = "botonInactivo";

                btnTiquetes.Enabled = false;
                btnTiquetes.CssClass = "botonInactivo";


                //ASPxRoundPanel1.Enabled = false;
                ASPxRoundPanel5.Enabled = false;

                //INFORME

                tnIniciarProcesoInforme.Enabled = true;
                tnIniciarProcesoInforme.CssClass = "boton";

                btnVBCoordinadorInforme.Enabled = false;
                tnIniciarProcesoInforme.CssClass = "botonInactivo";

                btnVBFinancieraInforme.Enabled = false;
                btnVBFinancieraInforme.CssClass = "botonInactivo";

                btnRechazarInforme.Enabled = false;
                btnRechazarInforme.CssClass = "botonInactivo";

                btnImprimirInforme.Enabled = false;
                btnImprimirInforme.CssClass = "botonInactivo";

                btnGuardarInforme.Enabled = false;

                break;
            case 4:
                btnGuardar.Enabled = false;
                btnGuardar.CssClass = "botonInactivo";

                btnIniciarProceso.Enabled = false;
                btnIniciarProceso.CssClass = "botonInactivo";

                btnGestionHumana.Enabled = false;
                btnGestionHumana.CssClass = "botonInactivo";

                btnCoordinadorProyecto.Enabled = false;
                btnCoordinadorProyecto.CssClass = "botonInactivo";

                btnPlaneacion.Enabled = true;
                btnPlaneacion.CssClass = "boton";


                btnDirector.Enabled = false;
                btnDirector.CssClass = "botonInactivo";

                btnFinanciera.Enabled = false;
                btnFinanciera.CssClass = "botonInactivo";


                btnImprimirResolucion.Enabled = false;
                btnImprimirResolucion.CssClass = "botonInactivo";

                btnRechazar.Enabled = true;
                btnRechazar.CssClass = "botonInactivo";

                btnImprimirReporteFuncionarios.Enabled = false;
                btnImprimirReporteFuncionarios.CssClass = "botonInactivo";

                btnTiquetes.Enabled = false;
                btnTiquetes.CssClass = "botonInactivo";


                //ASPxRoundPanel1.Enabled = false;
                ASPxRoundPanel5.Enabled = false;


                //INFORME

                tnIniciarProcesoInforme.Enabled = true;
                tnIniciarProcesoInforme.CssClass = "boton";

                btnVBCoordinadorInforme.Enabled = false;
                tnIniciarProcesoInforme.CssClass = "botonInactivo";

                btnVBFinancieraInforme.Enabled = false;
                btnVBFinancieraInforme.CssClass = "botonInactivo";

                btnRechazarInforme.Enabled = false;
                btnRechazarInforme.CssClass = "botonInactivo";

                btnImprimirInforme.Enabled = false;
                btnImprimirInforme.CssClass = "botonInactivo";

                btnGuardarInforme.Enabled = false;


                break;
            case 5:
                btnGuardar.Enabled = false;
                btnGuardar.CssClass = "botonInactivo";

                btnIniciarProceso.Enabled = false;
                btnIniciarProceso.CssClass = "botonInactivo";

                btnGestionHumana.Enabled = false;
                btnGestionHumana.CssClass = "botonInactivo";

                btnCoordinadorProyecto.Enabled = false;
                btnCoordinadorProyecto.CssClass = "botonInactivo";

                btnPlaneacion.Enabled = false;
                btnPlaneacion.CssClass = "botonInactivo";

                btnDirector.Enabled = true;
                btnDirector.CssClass = "boton";

                btnFinanciera.Enabled = false;
                btnFinanciera.CssClass = "botonInactivo";

                btnImprimirResolucion.Enabled = true;
                btnImprimirResolucion.CssClass = "botonInactivo";

                btnRechazar.Enabled = true;
                btnRechazar.CssClass = "botonInactivo";

                btnImprimirReporteFuncionarios.Enabled = false;
                btnImprimirReporteFuncionarios.CssClass = "botonInactivo";

                btnTiquetes.Enabled = false;
                btnTiquetes.CssClass = "botonInactivo";

                //ASPxRoundPanel1.Enabled = false;
                ASPxRoundPanel5.Enabled = false;

                //INFORME

                tnIniciarProcesoInforme.Enabled = true;
                tnIniciarProcesoInforme.CssClass = "boton";

                btnVBCoordinadorInforme.Enabled = false;
                tnIniciarProcesoInforme.CssClass = "botonInactivo";

                btnVBFinancieraInforme.Enabled = false;
                btnVBFinancieraInforme.CssClass = "botonInactivo";

                btnRechazarInforme.Enabled = false;
                btnRechazarInforme.CssClass = "botonInactivo";

                btnImprimirInforme.Enabled = false;
                btnImprimirInforme.CssClass = "botonInactivo";

                btnGuardarInforme.Enabled = false;

                break;
            case 6:
                btnGuardar.Enabled = false;
                btnGuardar.CssClass = "botonInactivo";

                btnIniciarProceso.Enabled = false;
                btnIniciarProceso.CssClass = "botonInactivo";

                btnGestionHumana.Enabled = false;
                btnGestionHumana.CssClass = "botonInactivo";

                btnCoordinadorProyecto.Enabled = false;
                btnCoordinadorProyecto.CssClass = "botonInactivo";

                btnPlaneacion.Enabled = false;
                btnPlaneacion.CssClass = "botonInactivo";


                btnDirector.Enabled = false;
                btnDirector.CssClass = "botonInactivo";

                btnFinanciera.Enabled = true;
                btnFinanciera.CssClass = "boton";


                btnImprimirResolucion.Enabled = false;
                btnImprimirResolucion.CssClass = "botonInactivo";

                btnRechazar.Enabled = true;
                btnRechazar.CssClass = "botonInactivo";



                btnImprimirReporteFuncionarios.Enabled = true;
                btnImprimirReporteFuncionarios.CssClass = "boton";

                btnTiquetes.Enabled = true;
                btnTiquetes.CssClass = "boton";

                //ASPxRoundPanel1.Enabled = false;
                ASPxRoundPanel5.Enabled = false;



                //INFORME

                tnIniciarProcesoInforme.Enabled = false;
                tnIniciarProcesoInforme.CssClass = "botonInactivo";

                btnVBCoordinadorInforme.Enabled = false;
                tnIniciarProcesoInforme.CssClass = "botonInactivo";

                btnVBFinancieraInforme.Enabled = false;
                btnVBFinancieraInforme.CssClass = "botonInactivo";

                btnRechazarInforme.Enabled = false;
                btnRechazarInforme.CssClass = "botonInactivo";

                btnImprimirInforme.Enabled = false;
                btnImprimirInforme.CssClass = "botonInactivo";

                btnGuardarInforme.Enabled = false;

                break;

            case 7:
                btnIniciarProceso.Enabled = false;
                btnIniciarProceso.CssClass = "botonInactivo";

                btnGestionHumana.Enabled = false;
                btnGestionHumana.CssClass = "botonInactivo";

                btnCoordinadorProyecto.Enabled = false;
                btnCoordinadorProyecto.CssClass = "botonInactivo";

                btnPlaneacion.Enabled = false;
                btnPlaneacion.CssClass = "botonInactivo";


                btnDirector.Enabled = false;
                btnDirector.CssClass = "botonInactivo";

                btnFinanciera.Enabled = false;
                btnFinanciera.CssClass = "botonInactivo";


                btnImprimirResolucion.Enabled = false;
                btnImprimirResolucion.CssClass = "botonInactivo";

                btnRechazar.Enabled = false;
                btnRechazar.CssClass = "botonInactivo";

                btnTiquetes.Enabled = false;
                btnTiquetes.CssClass = "botonInactivo";
                //INFORME

                tnIniciarProcesoInforme.Enabled = true;
                tnIniciarProcesoInforme.CssClass = "boton";

                btnVBCoordinadorInforme.Enabled = false;
                tnIniciarProcesoInforme.CssClass = "botonInactivo";

                btnVBFinancieraInforme.Enabled = false;
                btnVBFinancieraInforme.CssClass = "botonInactivo";

                btnRechazarInforme.Enabled = true;
                btnRechazarInforme.CssClass = "boton";

                btnImprimirInforme.Enabled = false;
                btnImprimirInforme.CssClass = "botonInactivo";




                btnGuardarInforme.Enabled = true;

                break;
            case 10:
                btnGuardar.Enabled = false;
                btnGuardar.CssClass = "botonInactivo";


                btnIniciarProceso.Enabled = false;
                btnIniciarProceso.CssClass = "botonInactivo";

                btnGestionHumana.Enabled = false;
                btnGestionHumana.CssClass = "botonInactivo";

                btnCoordinadorProyecto.Enabled = false;
                btnCoordinadorProyecto.CssClass = "botonInactivo";

                btnPlaneacion.Enabled = false;
                btnPlaneacion.CssClass = "botonInactivo";


                btnDirector.Enabled = false;
                btnDirector.CssClass = "botonInactivo";

                btnFinanciera.Enabled = false;
                btnFinanciera.CssClass = "botonInactivo";


                btnImprimirResolucion.Enabled = false;
                btnImprimirResolucion.CssClass = "botonInactivo";

                btnImprimirReporteFuncionarios.Enabled = false;
                btnImprimirReporteFuncionarios.CssClass = "botonInactivo";

                btnRechazar.Enabled = false;
                btnRechazar.CssClass = "botonInactivo";

                btnTiquetes.Enabled = false;
                btnTiquetes.CssClass = "botonInactivo";

                //INFORME

                tnIniciarProcesoInforme.Enabled = false;
                tnIniciarProcesoInforme.CssClass = "botonInactivo";

                btnVBCoordinadorInforme.Enabled = true;
                tnIniciarProcesoInforme.CssClass = "boton";

                btnVBFinancieraInforme.Enabled = false;
                btnVBFinancieraInforme.CssClass = "botonInactivo";

                btnRechazarInforme.Enabled = true;
                btnRechazarInforme.CssClass = "boton";

                btnImprimirInforme.Enabled = false;
                btnImprimirInforme.CssClass = "botonInactivo";
                btnGuardarInforme.Enabled = false;

                break;
            case 11:
                btnGuardar.Enabled = false;
                btnGuardar.CssClass = "botonInactivo";


                btnIniciarProceso.Enabled = false;
                btnIniciarProceso.CssClass = "botonInactivo";

                btnGestionHumana.Enabled = false;
                btnGestionHumana.CssClass = "botonInactivo";

                btnCoordinadorProyecto.Enabled = false;
                btnCoordinadorProyecto.CssClass = "botonInactivo";

                btnPlaneacion.Enabled = false;
                btnPlaneacion.CssClass = "botonInactivo";


                btnDirector.Enabled = false;
                btnDirector.CssClass = "botonInactivo";

                btnFinanciera.Enabled = false;
                btnFinanciera.CssClass = "botonInactivo";


                btnImprimirResolucion.Enabled = false;
                btnImprimirResolucion.CssClass = "botonInactivo";

                btnImprimirReporteFuncionarios.Enabled = false;
                btnImprimirReporteFuncionarios.CssClass = "botonInactivo";

                btnRechazar.Enabled = false;
                btnRechazar.CssClass = "botonInactivo";


                //INFORME

                btnTiquetes.Enabled = false;
                btnTiquetes.CssClass = "botonInactivo";

                tnIniciarProcesoInforme.Enabled = false;
                tnIniciarProcesoInforme.CssClass = "botonInactivo";

                btnVBCoordinadorInforme.Enabled = false;
                tnIniciarProcesoInforme.CssClass = "botonInactivo";

                btnVBFinancieraInforme.Enabled = true;
                btnVBFinancieraInforme.CssClass = "boton";

                btnRechazarInforme.Enabled = true;
                btnRechazarInforme.CssClass = "boton";

                btnImprimirInforme.Enabled = true;
                btnImprimirInforme.CssClass = "boton";

                btnGuardarInforme.Enabled = false;

                break;

            case 12:
                btnGuardar.Enabled = false;
                btnGuardar.CssClass = "botonInactivo";


                btnIniciarProceso.Enabled = false;
                btnIniciarProceso.CssClass = "botonInactivo";

                btnGestionHumana.Enabled = false;
                btnGestionHumana.CssClass = "botonInactivo";

                btnCoordinadorProyecto.Enabled = false;
                btnCoordinadorProyecto.CssClass = "botonInactivo";

                btnPlaneacion.Enabled = false;
                btnPlaneacion.CssClass = "botonInactivo";


                btnDirector.Enabled = false;
                btnDirector.CssClass = "botonInactivo";

                btnFinanciera.Enabled = false;
                btnFinanciera.CssClass = "botonInactivo";


                btnImprimirResolucion.Enabled = false;
                btnImprimirResolucion.CssClass = "botonInactivo";

                btnImprimirReporteFuncionarios.Enabled = false;
                btnImprimirReporteFuncionarios.CssClass = "botonInactivo";

                btnRechazar.Enabled = false;
                btnRechazar.CssClass = "botonInactivo";

                btnTiquetes.Enabled = false;
                btnTiquetes.CssClass = "botonInactivo";

                //INFORME

                tnIniciarProcesoInforme.Enabled = false;
                tnIniciarProcesoInforme.CssClass = "botonInactivo";

                btnVBCoordinadorInforme.Enabled = false;
                tnIniciarProcesoInforme.CssClass = "botonInactivo";

                btnVBFinancieraInforme.Enabled = false;
                btnVBFinancieraInforme.CssClass = "botonInactivo";

                btnRechazarInforme.Enabled = false;
                btnRechazarInforme.CssClass = "botonInactivo";

                btnImprimirInforme.Enabled = false;
                btnImprimirInforme.CssClass = "botonInactivo";
                btnGuardarInforme.Enabled = false;

                break;
            default:

                btnGuardar.Enabled = false;
                btnGuardar.CssClass = "botonInactivo";


                btnIniciarProceso.Enabled = false;
                btnIniciarProceso.CssClass = "botonInactivo";

                btnGestionHumana.Enabled = false;
                btnGestionHumana.CssClass = "botonInactivo";

                btnCoordinadorProyecto.Enabled = false;
                btnCoordinadorProyecto.CssClass = "botonInactivo";

                btnPlaneacion.Enabled = false;
                btnPlaneacion.CssClass = "botonInactivo";


                btnDirector.Enabled = false;
                btnDirector.CssClass = "botonInactivo";

                btnFinanciera.Enabled = false;
                btnFinanciera.CssClass = "botonInactivo";


                btnImprimirResolucion.Enabled = false;
                btnImprimirResolucion.CssClass = "botonInactivo";

                btnImprimirReporteFuncionarios.Enabled = false;
                btnImprimirReporteFuncionarios.CssClass = "botonInactivo";

                btnRechazar.Enabled = false;
                btnRechazar.CssClass = "botonInactivo";

                btnTiquetes.Enabled = false;
                btnTiquetes.CssClass = "botonInactivo";

                //INFORME

                tnIniciarProcesoInforme.Enabled = false;
                tnIniciarProcesoInforme.CssClass = "botonInactivo";

                btnVBCoordinadorInforme.Enabled = false;
                tnIniciarProcesoInforme.CssClass = "botonInactivo";

                btnVBFinancieraInforme.Enabled = false;
                btnVBFinancieraInforme.CssClass = "botonInactivo";

                btnRechazarInforme.Enabled = false;
                btnRechazarInforme.CssClass = "botonInactivo";

                btnImprimirInforme.Enabled = false;
                btnImprimirInforme.CssClass = "botonInactivo";
                btnGuardarInforme.Enabled = false;

                break;
        }


    }

    #endregion


    #region actualizarFaseEnviaCorreo
    private void actualizarFaseEnviaCorreoRechazo(decimal decEstado, string strObservacionesFase)
    {

        Model.DataClassesViaticosDataContext contexto = new Model.DataClassesViaticosDataContext(ConfigurationManager.AppSettings["Conn"]);
        Model.DataClassesContratosDataContext contextoA = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);

        decimal decEstadoActual = 0;
        ///////////////////////////////////////////
        //          actualiza el estado          //
        ///////////////////////////////////////////
        var datoComisionActualizarEstado = from a in contexto.COM_COMISIONs
                                           where a.COM_ID == Convert.ToDecimal(StrComId)
                                           select a;
        foreach (var e in datoComisionActualizarEstado)
        {
            decEstadoActual = Convert.ToDecimal(e.COE_ID);
            if (Convert.ToDecimal(e.COE_ID) >= 7)
            {
                //rechaza hasta el estado 7
                e.COE_ID = 7;
            }
            else
            {
                e.COE_ID = 0;
            }
        }


        ///////////////////////////////////
        //       Guarda Historico        //
        ///////////////////////////////////
        Model.COM_COMISION_HISTORICO v = new Model.COM_COMISION_HISTORICO();
        v.CCH_FECHA = DateTime.Now;
        v.USU_ID = Usuario.UsuId;
        v.COM_ID = Convert.ToDecimal(StrComId);
        v.COE_ID = decEstado;
        v.CCH_OBSERVACIONES = strObservacionesFase;
        contexto.COM_COMISION_HISTORICOs.InsertOnSubmit(v);
        contexto.SubmitChanges();

        //////////////////////////////////////////////////
        //   apaga todos los botones por defecto        //
        //////////////////////////////////////////////////
        verificarPermisosBotones(20);



        ///////////////////////////////////////////////////////////////////////////////////////////
        //Consulta si el usuario actual tiene permiso en la siguiente fase //
        ///////////////////////////////////////////////////////////////////////////////////////////


        var datosPermisosUsuarioComision = from a in contexto.ADM_PERMISOS_COMISIONEs
                                           where a.USU_ID == Usuario.UsuId
                                           select a;

        bool boolBandera = false;
        foreach (var t in datosPermisosUsuarioComision)
        {
            decimal decPermisoUsuario = Convert.ToDecimal(t.COE_ID);

            if (decPermisoUsuario == decEstado)
            {
                boolBandera = true;
            }
        }

        if (boolBandera)
        {
            verificarPermisosBotones(Convert.ToInt32(decEstado));
        }



        /////////////////////////////////////////////////////////
        //     Enviar correo a los usuarios de la siguiente fase y del rubro correspondiente
        //     Buscar el rubro deacuerdo al CDP seleccionado
        //     mirar que rubro tiene relacionado basado en la fase
        ////////////////////////////////////////////////////////

        BusinessRules.Usuarios objBR = new BusinessRules.Usuarios(ConfigurationManager.AppSettings["Conn"]);
        if (StrPlnId != "")
        {

            //obtengo el usu_id que tiene permiso
            var datosEnvioCorreosSiguienteFase = from a in contexto.COM_COMISION_HISTORICOs
                                                 where a.COM_ID == Convert.ToDecimal(StrComId)
                                                 select a;

            foreach (var i in datosEnvioCorreosSiguienteFase)
            {
                //consultar el correo del usu_id en enviar la plantilla
                var datosCorreoUsuario = from h in contextoA.ADM_USUARIOs
                                         where h.USU_ID == i.USU_ID
                                         select h;
                foreach (var u in datosCorreoUsuario)
                {
                    if (!String.IsNullOrEmpty(u.USU_CORREO_ELECTRONICO))

                        if (i.COE_ID >= decEstadoActual)
                            if (objBR.correoFaseComisionRechazo(u.USU_CORREO_ELECTRONICO,
                                                 COM_OBJETO_PLAN_VIAJE.Text, Usuario.Nombre, StrComId, StrPlnId, Convert.ToString(Usuario.UsuId), "Rechazo Comisión", txtObservacionesRechazo.Text, ConfigurationManager.AppSettings["MailServer"], ConfigurationManager.AppSettings["MailAutentication"], ConfigurationManager.AppSettings["MailPassword"]))
                            {

                                lblMotivoRechazo.Text = Utilidad.TraerMensaje("gmsgExitoGuardar");
                                lblMotivoRechazo.CssClass = "mensaje";
                                lblMotivoRechazo.Visible = true;

                            }
                            // No existe un usuario con el correo dado
                            else
                            {
                                lblMotivoRechazo.Text = Utilidad.TraerMensaje("gmsgCorreoElectronicoNoExiste", lblMensaje.Text.Trim());
                                lblMotivoRechazo.CssClass = "aviso";
                                lblMotivoRechazo.Visible = true;
                            }

                }


            }


        }


    }
    #endregion


    #region actualizarFaseEnviaCorreo
    private void actualizarFaseEnviaCorreo(decimal decEstado, string strObservacionesFase)
    {

        Model.DataClassesViaticosDataContext contexto = new Model.DataClassesViaticosDataContext(ConfigurationManager.AppSettings["Conn"]);
        Model.DataClassesContratosDataContext contextoA = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);


        ///////////////////////////////////////////
        //          actualiza el estado          //
        ///////////////////////////////////////////
        var datoComisionActualizarEstado = from a in contexto.COM_COMISIONs
                                           where a.COM_ID == Convert.ToDecimal(StrComId)
                                           select a;
        foreach (var e in datoComisionActualizarEstado)
        {
            e.COE_ID = decEstado;
        }


        ///////////////////////////////////
        //       Guarda Historico        //
        ///////////////////////////////////
        Model.COM_COMISION_HISTORICO v = new Model.COM_COMISION_HISTORICO();
        v.CCH_FECHA = DateTime.Now;
        v.USU_ID = Usuario.UsuId;
        v.COM_ID = Convert.ToDecimal(StrComId);
        v.COE_ID = decEstado;
        v.CCH_OBSERVACIONES = strObservacionesFase;
        contexto.COM_COMISION_HISTORICOs.InsertOnSubmit(v);
        contexto.SubmitChanges();

        //////////////////////////////////////////////////
        //   apaga todos los botones por defecto        //
        //////////////////////////////////////////////////
        verificarPermisosBotones(20);


        ///////////////////////////////////////////////////////////////////////////////////////////
        //Consulta si el usuario actual tiene permiso en la siguiente fase //
        ///////////////////////////////////////////////////////////////////////////////////////////


        var datosPermisosUsuarioComision = from a in contexto.ADM_PERMISOS_COMISIONEs
                                           where a.USU_ID == Usuario.UsuId
                                           select a;

        bool boolBandera = false;
        foreach (var t in datosPermisosUsuarioComision)
        {
            decimal decPermisoUsuario = Convert.ToDecimal(t.COE_ID);

            if (decPermisoUsuario == decEstado)
            {
                boolBandera = true;
            }
        }

        if (boolBandera)
        {
            verificarPermisosBotones(Convert.ToInt32(decEstado));
        }



        /////////////////////////////////////////////////////////
        //     Enviar correo a los usuarios de la siguiente fase y del rubro correspondiente
        //     Buscar el rubro deacuerdo al CDP seleccionado
        //     mirar que rubro tiene relacionado basado en la fase
        ////////////////////////////////////////////////////////

        BusinessRules.Usuarios objBR = new BusinessRules.Usuarios(ConfigurationManager.AppSettings["Conn"]);
        if (StrPlnId != "")
        {

            //obtengo el usu_id que tiene permiso
            var datosEnvioCorreosSiguienteFase = from a in contexto.ADM_PERMISOS_COMISIONEs
                                                 where a.PLN_ID == Convert.ToDecimal(StrPlnId) && a.COE_ID == decEstado
                                                 select a;

            foreach (var i in datosEnvioCorreosSiguienteFase)
            {
                //consultar el correo del usu_id en enviar la plantilla
                var datosCorreoUsuario = from h in contextoA.ADM_USUARIOs
                                         where h.USU_ID == i.USU_ID
                                         select h;
                foreach (var u in datosCorreoUsuario)
                {
                    if (!String.IsNullOrEmpty(u.USU_CORREO_ELECTRONICO))
                        if (objBR.correoFaseComision(u.USU_CORREO_ELECTRONICO,
                                             COM_OBJETO_PLAN_VIAJE.Text, Usuario.Nombre, StrComId, StrPlnId, Convert.ToString(Usuario.UsuId), strObservacionesFase, ConfigurationManager.AppSettings["MailServer"], ConfigurationManager.AppSettings["MailAutentication"], ConfigurationManager.AppSettings["MailPassword"]))
                        {



                            lblMensaje.Text = Utilidad.TraerMensaje("gmsgExitoGuardar");
                            lblMensaje.CssClass = "mensaje";
                            lblMensaje.Visible = true;

                        }
                        // No existe un usuario con el correo dado
                        else
                        {
                            lblMensaje.Text = Utilidad.TraerMensaje("gmsgCorreoElectronicoNoExiste", lblMensaje.Text.Trim());
                            lblMensaje.CssClass = "aviso";
                            lblMensaje.Visible = true;
                        }

                }


            }


        }


    }
    #endregion

    // PASO 1
    protected void btnIniciarProceso_Click(object sender, EventArgs e)
    {
        actualizarFaseEnviaCorreo(2, btnIniciarProceso.Text);

    }

    // PASO 2
    protected void btnGestionHumana_Click(object sender, EventArgs e)
    {
        ASPxPopupControlTransporteTerrestre.ShowOnPageLoad = true;
    }

    // PASO 3
    protected void btnCoordinadorProyecto_Click(object sender, EventArgs e)
    {
        actualizarFaseEnviaCorreo(4, btnCoordinadorProyecto.Text);
    }

    // PASO 4
    protected void btnPlaneacion_Click(object sender, EventArgs e)
    {
        actualizarFaseEnviaCorreo(5, btnPlaneacion.Text);
    }

    // PASO 4
    protected void btnDirector_Click(object sender, EventArgs e)
    {
        //NUMERA Y FECHA 

        //ASPxPopupControlNumeracionResolucion.ShowOnPageLoad = true;

        actualizarFaseEnviaCorreo(6, btnDirector.Text);

        string texto2 = "Por favor ingresar al siguiente <b> link:</b> http:///www.sinic.gov.co/agn2014/ViaticosRegistroViajeProgramado.aspx?SSM_ID=42&r=" + StrComId + "&a=" + StrPlnId + "&e=" + Convert.ToString(Usuario.UsuId) + "&i=1  <BR> para registrar el valor de los tiquetes, gracias <b>Nota</b> <BR>Si usted no ingresa al sistema la COMISION no tendrá trámite alguno.<BR>Cordialmente <BR>Sistema de Informacion para la Toma de Decisiones";

        EnviarCorreo(ConfigurationManager.AppSettings["IngresaValorTiquetes"], "", @"Comision Aprobada por Director", texto2, ConfigurationManager.AppSettings["MailServer"], ConfigurationManager.AppSettings["MailAutentication"], ConfigurationManager.AppSettings["MailPassword"]);
        //EnviarCorreo(ConfigurationManager.AppSettings["IngresaValorTiquetesB"], "", @"Comision Aprobada por Director", texto2, ConfigurationManager.AppSettings["MailServer"], ConfigurationManager.AppSettings["MailAutentication"], ConfigurationManager.AppSettings["MailPassword"]);

        Model.DataClassesViaticosDataContext contexto = new Model.DataClassesViaticosDataContext(ConfigurationManager.AppSettings["Conn"]);
        int intAno = 2015;
        int salida = (contexto.PAS_ACTUALIZAR_COM_COMISION_COM_CONSECUTIVO(Convert.ToDecimal(StrComId), intAno));
        lblNumeroComision.Text = salida.ToString();


    }

    // PASO 5
    protected void btnFinanciera_Click(object sender, EventArgs e)
    {
        Model.DataClassesViaticosDataContext contexto = new Model.DataClassesViaticosDataContext(ConfigurationManager.AppSettings["Conn"]);

        Model.DataClassesContratosDataContext contexto2 = new Model.DataClassesContratosDataContext(ConfigurationManager.AppSettings["Conn"]);

        actualizarFaseEnviaCorreo(7, btnFinanciera.Text);

        //////////////////////////////////////////////////////////////////////////////////////////////////
        // envia un correo al usuario que viaja con una bandera que indica que se registra una comision //
        //////////////////////////////////////////////////////////////////////////////////////////////////
        BusinessRules.Usuarios objBR = new BusinessRules.Usuarios(ConfigurationManager.AppSettings["Conn"]);
        var datosPersonaViaja = from p in contexto.COM_COMISIONs
                                where p.COM_ID == Convert.ToDecimal(StrComId)
                                select p;
        foreach (var pe in datosPersonaViaja)
        {

            var datosContratista = from a in contexto2.CON_CONTRATISTAs
                                   where
                                       a.CCO_ID == pe.CCO_ID
                                   select a;
            foreach (var o in datosContratista)
            {
                if (StrPlnId != "")
                {

                    if (objBR.correoFaseComisionInforme(o.CCO_COREO_ELECTRONICO,
                                                             COM_OBJETO_PLAN_VIAJE.Text, Usuario.Nombre, StrComId, StrPlnId, Convert.ToString(Usuario.UsuId), "Por Favor Registrar Informe de Comisión", ConfigurationManager.AppSettings["MailServer"], ConfigurationManager.AppSettings["MailAutentication"], ConfigurationManager.AppSettings["MailPassword"]))
                    {
                        lblMensaje.Text = Utilidad.TraerMensaje("gmsgExitoGuardar");
                        lblMensaje.CssClass = "mensaje";
                        lblMensaje.Visible = true;
                    }
                    // No existe un usuario con el correo dado
                    else
                    {
                        lblMensaje.Text = Utilidad.TraerMensaje("gmsgCorreoElectronicoNoExiste", lblMensaje.Text.Trim());
                        lblMensaje.CssClass = "aviso";
                        lblMensaje.Visible = true;
                    }
                }
            }

        }

    }

    protected void CCO_TIPO_SelectedIndexChanged(object sender, EventArgs e)
    {
        cargarPersonas();
    }

    protected void ASPxEntidadSuministraViaticos_SelectedIndexChanged(object sender, EventArgs e)
    {
        //if (COM_ENTIDAD_SUMINISTRA_VIATICOS.Value.ToString() != "AGN")
        //    trEntidad.Visible = true;
        //else
        //    trEntidad.Visible = false;

    }

    protected void ASPxEntidadSuministraTiquetes_SelectedIndexChanged(object sender, EventArgs e)
    {
        //if (COM_ENTIDAD_SUMINISTRA_TIQUETES.Value.ToString() != "AGN")
        //    trDescripcionEntidad2.Visible = true;
        //else

        //    trDescripcionEntidad2.Visible = false;

    }

    protected void btnImprimirReporteFuncionarios_Click(object sender, EventArgs e)
    {
        Session["COM_ID"] = this.StrComId;
        if (CCO_TIPO.Value.ToString() == "F")
        {
            if (CCO_ID.Value.ToString() == "498")
            {
                System.Text.StringBuilder l_msg = new System.Text.StringBuilder();
                l_msg.Append(@"<script language=javascript>");
                l_msg.Append(@"window.open('ReporteSolicitudComisionDirector.aspx" + @"', 'VentanaImpresion','location=0, status=0, directories=0, hotkeys=no, scrollbars=yes, toolbar=no, menubar=no, personalbar=no');</script>");
                Response.Write(l_msg.ToString());
            }
            else
            {
                System.Text.StringBuilder l_msg = new System.Text.StringBuilder();
                l_msg.Append(@"<script language=javascript>");
                l_msg.Append(@"window.open('ReporteSolicitudComision.aspx" + @"', 'VentanaImpresion','location=0, status=0, directories=0, hotkeys=no, scrollbars=yes, toolbar=no, menubar=no, personalbar=no');</script>");
                Response.Write(l_msg.ToString());
            }



        }
        else
            if (CCO_TIPO.Value.ToString() == "C")
            {
                System.Text.StringBuilder l_msg = new System.Text.StringBuilder();
                l_msg.Append(@"<script language=javascript>");
                l_msg.Append(@"window.open('ReporteSolicitudComisionContratista.aspx" + @"', 'VentanaImpresion','location=0, status=0, directories=0, hotkeys=no, scrollbars=yes, toolbar=no, menubar=no, personalbar=no');</script>");
                Response.Write(l_msg.ToString());
            }
    }

    protected void btnGrabarNumeroComision_Click(object sender, EventArgs e)
    {
        try
        {
            //guarda la fecha de la resolucion y el numero de resolucion
            Model.DataClassesViaticosDataContext contexto = new Model.DataClassesViaticosDataContext(ConfigurationManager.AppSettings["Conn"]);
            var datos = from a in contexto.COM_COMISIONs
                        where a.COM_ID == Convert.ToDecimal(StrComId)
                        select a;

            foreach (var v in datos)
            {
                //DateTime obj = Convert.ToDateTime(txtFechaRegistro.Text);
                //v.COM_FECHA_NUMERO_RESOLUCION = obj;
                v.COM_TIQUETES_VALOR_TOTAL = Convert.ToDecimal(txtValorTiquetes.Text);
                contexto.SubmitChanges();


                COM_TIQUETES_VALOR_TOTAL.Text = txtValorTiquetes.Text;
                //COM_NUMERO_RESOLUCION.Text = v.COM_NUMERO_RESOLUCION;
                //COM_FECHA_NUMERO_RESOLUCION.Text = v.COM_FECHA_NUMERO_RESOLUCION.ToString();
            }
            //actualizarFaseEnviaCorreo(6, btnDirector.Text);



            lblNumeracion.Text = Utilidad.TraerMensaje("gmsgExitoGuardar");
            lblNumeracion.CssClass = "mensaje";
            lblNumeracion.Visible = true;
        }
        catch (Exception ex)
        {

            lblNumeracion.Text = ex.Message.ToString();
            lblNumeracion.Visible = true;
        }

    }

    protected void btnRechazar_Click(object sender, EventArgs e)
    {
        PopupPanelMotivoRechazo.ShowOnPageLoad = true;
    }

    protected void btnGrabarRechazar_Click(object sender, EventArgs e)
    {


        try
        {
            actualizarFaseEnviaCorreoRechazo(0, txtObservacionesRechazo.Text);

            lblMotivoRechazo.Text = Utilidad.TraerMensaje("gmsgExitoGuardar");
            lblMotivoRechazo.CssClass = "mensaje";
            lblMotivoRechazo.Visible = true;
        }
        catch (Exception ex)
        {

            lblMotivoRechazo.Text = ex.Message.ToString();
            lblMotivoRechazo.Visible = true;
        }

    }

    protected void btnTiquetes_Click(object sender, EventArgs e)
    {
        ASPxPopupControlTiquetes.ShowOnPageLoad = true;
    }


    protected void uplImage_FileUploadComplete(object sender, FileUploadCompleteEventArgs e)
    {
        e.CallbackData = SavePostedFile(e.UploadedFile);
    }



    string SavePostedFile(UploadedFile uploadedFile)
    {


        if (!uploadedFile.IsValid)
            return string.Empty;

        ThumbnailFileName = DateTime.Now.ToString().Replace("/", "-").Replace(":", ".") + "_" + uploadedFile.FileName;
        string fileName = Path.Combine(MapPath(UploadDirectory), ThumbnailFileName);


        using (System.Drawing.Image original = System.Drawing.Image.FromStream(uploadedFile.FileContent))
        using (System.Drawing.Image thumbnail = PhotoUtils.Inscribe(original, 300))
        {
            PhotoUtils.SaveToJpeg(thumbnail, fileName);
        }
        Variable = ThumbnailFileName;
        Session["Archivo1"] = ThumbnailFileName;

        return ThumbnailFileName;
    }


    protected void uplImage_FileUploadComplete2(object sender, FileUploadCompleteEventArgs e)
    {
        e.CallbackData = SavePostedFile2(e.UploadedFile);
    }


    string SavePostedFile2(UploadedFile uploadedFile)
    {


        if (!uploadedFile.IsValid)
            return string.Empty;

        Session["Archivo2"] = DateTime.Now.ToString().Replace("/", "-").Replace(":", ".") + "_" + uploadedFile.FileName;
        string fileName = Path.Combine(MapPath(UploadDirectory), Session["Archivo2"].ToString());


        using (System.Drawing.Image original = System.Drawing.Image.FromStream(uploadedFile.FileContent))
        using (System.Drawing.Image thumbnail = PhotoUtils.Inscribe(original, 300))
        {
            PhotoUtils.SaveToJpeg(thumbnail, fileName);
        }

        return Session["Archivo2"].ToString();
    }


    protected void uplImage_FileUploadComplete3(object sender, FileUploadCompleteEventArgs e)
    {
        e.CallbackData = SavePostedFile3(e.UploadedFile);
    }

    string SavePostedFile3(UploadedFile uploadedFile)
    {


        if (!uploadedFile.IsValid)
            return string.Empty;

        Session["Archivo3"] = DateTime.Now.ToString().Replace("/", "-").Replace(":", ".") + "_" + uploadedFile.FileName;
        string fileName = Path.Combine(MapPath(UploadDirectory), Session["Archivo3"].ToString());


        using (System.Drawing.Image original = System.Drawing.Image.FromStream(uploadedFile.FileContent))
        using (System.Drawing.Image thumbnail = PhotoUtils.Inscribe(original, 300))
        {
            PhotoUtils.SaveToJpeg(thumbnail, fileName);
        }

        return Session["Archivo3"].ToString();
    }

    protected void btnGuardarInforme_Click(object sender, EventArgs e)
    {
        grabarInforme();
    }

    private void grabarInforme()
    {
        //ALMACENA EN LA BASE DE DATOS  EL PASABORDO DE ORIGEN
        try
        {
            //guarda la fecha de la resolucion y el numero de resolucion
            Model.DataClassesViaticosDataContext contexto = new Model.DataClassesViaticosDataContext(ConfigurationManager.AppSettings["Conn"]);
            var datos = from a in contexto.COM_COMISIONs
                        where a.COM_ID == Convert.ToDecimal(StrComId)
                        select a;

            foreach (var v in datos)
            {
                //DateTime obj = Convert.ToDateTime(txtFechaRegistro.Text);
                //v.COM_FECHA_NUMERO_RESOLUCION = obj;



                //ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_parteA", "alert('La información se guardo exitosamente');", true);
                if (!String.IsNullOrEmpty(Session["Archivo1"].ToString()))
                {
                    if (Session["Archivo1"].ToString() != HyperLinkPasabordoOrigen.Text)
                        DeleteFile(MapPath(UploadDirectory + HyperLinkPasabordoOrigen.Text));


                    v.COM_PASABORDO = Session["Archivo1"].ToString();
                    HyperLinkPasabordoOrigen.Text = Session["Archivo1"].ToString();
                    HyperLinkPasabordoOrigen.NavigateUrl = UploadDirectory + Session["Archivo1"].ToString();
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_cargaImagen_", "CargarPreviewImageElement('Archivos/Comisiones/" + Session["Archivo1"].ToString() + "?dx=" + DateTime.Now.Ticks.ToString() + "');", true);
                }
                else if (HyperLinkPasabordoOrigen.Text != "")
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_cargaImagen_", "CargarPreviewImageElement('Archivos/Comisiones/" + HyperLinkPasabordoOrigen.Text + "?dx=" + DateTime.Now.Ticks.ToString() + "');", true);


                if (!String.IsNullOrEmpty((Session["Archivo2"].ToString())))
                {
                    if (Session["Archivo2"].ToString() != HyperLinkPasabordoDestino.Text)
                        DeleteFile(MapPath(UploadDirectory + HyperLinkPasabordoDestino.Text));
                    v.COM_PASABORDO_REGRESO = Session["Archivo2"].ToString();

                    HyperLinkPasabordoDestino.Text = Session["Archivo2"].ToString();
                    HyperLinkPasabordoDestino.NavigateUrl = UploadDirectory + Session["Archivo2"].ToString();
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_cargaImagen2_", "CargarPreviewImageElement2('Archivos/Comisiones/" + Session["Archivo2"].ToString() + "?dx=" + DateTime.Now.Ticks.ToString() + "');", true);
                }
                else if (HyperLinkPasabordoDestino.Text != "")
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_cargaImagen2_", "CargarPreviewImageElement2('Archivos/Comisiones/" + HyperLinkPasabordoDestino.Text + "?dx=" + DateTime.Now.Ticks.ToString() + "');", true);


                if (!String.IsNullOrEmpty(Session["Archivo3"].ToString()))
                {
                    if (Session["Archivo3"].ToString() != HyperLinkPasabordoOtro.Text)
                        DeleteFile(MapPath(UploadDirectory + HyperLinkPasabordoOtro.Text));
                    v.COM_PASABORDO_OTROS = Session["Archivo3"].ToString();

                    HyperLinkPasabordoOtro.Text = Session["Archivo3"].ToString();
                    HyperLinkPasabordoOtro.NavigateUrl = UploadDirectory + Session["Archivo3"].ToString();
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_cargaImagen3_", "CargarPreviewImageElement3('Archivos/Comisiones/" + Session["Archivo3"].ToString() + "?dx=" + DateTime.Now.Ticks.ToString() + "');", true);
                }
                else if (HyperLinkPasabordoOtro.Text != "")
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_cargaImagen3_", "CargarPreviewImageElement3('Archivos/Comisiones/" + HyperLinkPasabordoOtro.Text + "?dx=" + DateTime.Now.Ticks.ToString() + "');", true);

                v.COM_RESUMEN = COM_RESUMEN.Text;
                v.COM_CONTENIDO = COM_CONTENIDO.Text;
                v.COM_CONCLUSIONES = COM_CONCLUSIONES.Text;
                v.COM_RECOMENDACIONES = COM_RECOMENDACIONES.Text;
                v.COM_CUMPLIDO_INFORME = COM_CUMPLIDO_INFORME.Text;
                v.COM_RECIBOS_TRANSPORTE_TERRESTRE = COM_RECIBOS_TRANSPORTE_TERRESTRE.Text;
                v.COM_RECIBOS_TRANSPORTE_FLUVIAL = COM_RECIBOS_TRANSPORTE_FLUVIAL.Text;
                v.COM_OTROS = COM_OTROS.Text;
                contexto.SubmitChanges();

                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_parteA", "alert('La información se guardo exitosamente');", true);

                //COM_NUMERO_RESOLUCION.Text = v.COM_NUMERO_RESOLUCION;
                //COM_FECHA_NUMERO_RESOLUCION.Text = v.COM_FECHA_NUMERO_RESOLUCION.ToString();
            }
            //actualizarFaseEnviaCorreo(6, btnDirector.Text);

            //imgPasabordo.ImageUrl = @"Archivos/Comisiones/" + Session["Archivo1"].ToString(); 

            lblNumeracion.Text = Utilidad.TraerMensaje("gmsgExitoGuardar");
            lblNumeracion.CssClass = "mensaje";
            lblNumeracion.Visible = true;
        }
        catch (Exception ex)
        {

            lblNumeracion.Text = ex.Message.ToString();
            lblNumeracion.Visible = true;
        }
    }

    #region DeleteFile
    private static void DeleteFile(string strFileName)
    { //Delete file from the server
        if (strFileName.Trim().Length > 0)
        {
            FileInfo fi = new FileInfo(strFileName);
            if (fi.Exists) //if file exists delete it
            {
                fi.Delete();
            }
        }
    }
    #endregion



    protected void btnGrabarValorTransporteTerrestre_Click(object sender, EventArgs e)
    {
        try
        {
            if (validarDisponibilidadCDPsGestionHumana())
            {
                //guarda la fecha de la resolucion y el numero de resolucion
                Model.DataClassesViaticosDataContext contexto = new Model.DataClassesViaticosDataContext(ConfigurationManager.AppSettings["Conn"]);
                var datos = from a in contexto.COM_COMISIONs
                            where a.COM_ID == Convert.ToDecimal(StrComId)
                            select a;

                foreach (var v in datos)
                {
                    //DateTime obj = Convert.ToDateTime(txtFechaRegistro.Text);
                    //v.COM_FECHA_NUMERO_RESOLUCION = obj;
                    v.COM_VIATICOS_VALOR_OTROS_TRANS_TERRESTRE = Convert.ToDecimal(txtValorTransporteTerrestre.Text);
                    contexto.SubmitChanges();
                    //COM_NUMERO_RESOLUCION.Text = v.COM_NUMERO_RESOLUCION;
                    //COM_FECHA_NUMERO_RESOLUCION.Text = v.COM_FECHA_NUMERO_RESOLUCION.ToString();



                }
                //actualizarFaseEnviaCorreo(6, btnDirector.Text);

                actualizarFaseEnviaCorreo(3, btnGestionHumana.Text);

                lblMensajeValorTransporteTerrestre.Text = Utilidad.TraerMensaje("gmsgExitoGuardar");
                lblMensajeValorTransporteTerrestre.CssClass = "mensaje";
                lblMensajeValorTransporteTerrestre.Visible = true;

                ////////////////////////////////
                // envia un correo solitando los tiquetes de la comision informa cual es el origen y el destino
                ///////////////////////////////////
                string texto = "Por favor ingresar al siguiente <b> link:</b> http:///www.sinic.gov.co/agn2014/ViaticosRegistroViajeProgramado.aspx?SSM_ID=42&r=" + StrComId + "&a=" + StrPlnId + "&e=" + Convert.ToString(Usuario.UsuId) + "&i=1  <BR> para validar la información de los trayectos, gracias.<BR>Cordialmente <BR>Sistema de Informacion para la Toma de Decisiones";
                EnviarCorreo(ConfigurationManager.AppSettings["IngresaValorTiquetes"], "", @"Se acaba de Registrar una Comisión", texto, ConfigurationManager.AppSettings["MailServer"], ConfigurationManager.AppSettings["MailAutentication"], ConfigurationManager.AppSettings["MailPassword"]);
                //EnviarCorreo(ConfigurationManager.AppSettings["IngresaValorTiquetesB"], "", @"Se acaba de Registrar una Comisión", texto, ConfigurationManager.AppSettings["MailServer"], ConfigurationManager.AppSettings["MailAutentication"], ConfigurationManager.AppSettings["MailPassword"]);

            }
        }
        catch (Exception ex)
        {

            lblNumeracion.Text = ex.Message.ToString();
            lblNumeracion.Visible = true;
        }
    }


    public static bool EnviarCorreo(string strTo, string strCC, string strSubject, string strMessage, string strServidor, string strMailAutentication, string strMailpassword)
    {

        try
        {

            bool Salida = true;
            System.Net.Mail.MailMessage correo = new System.Net.Mail.MailMessage();
            correo.From = new System.Net.Mail.MailAddress(strMailAutentication);
            correo.To.Add(strTo);
            correo.Bcc.Add("sig@mincultura.gov.co");
            //correo.Bcc.Add("hgracia@mincultura.gov.co");
            correo.Subject = strSubject;
            correo.Body = strMessage;
            correo.IsBodyHtml = true;
            correo.Priority = System.Net.Mail.MailPriority.Normal;
            System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();
            smtp.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
            smtp.Host = strServidor;//"192.168.160.129";//"MCQUIMBAYA.mincultura.dag";//"MCQUIMBAYA.mincultura.dag";
            smtp.UseDefaultCredentials = true;
            smtp.Credentials = new System.Net.NetworkCredential(strMailAutentication, strMailpassword);
            smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;

            string strSalida = "";
            try
            {
                smtp.Send(correo);
            }
            catch (Exception ex)
            {
                strSalida = ex.Message;
            }
            return Salida;
        }
        catch (Exception ex)
        {
            string ex1 = ex.Message;
            ex1 = ex1.ToString();
            return false;
        }
    }

    protected void tnIniciarProcesoInforme_Click(object sender, EventArgs e)
    {
        grabarInforme();
        actualizarFaseEnviaCorreo(10, "LEGALIZACION INFORME - PENDIENTE V.B COORDINADOR PROYECTO");
    }
    protected void btnVBCoordinadorInforme_Click(object sender, EventArgs e)
    {
        actualizarFaseEnviaCorreo(11, "LEGALIZACION INFORME - PENDIENTE V.B FINANCIERA");
    }
    protected void btnVBFinancieraInforme_Click(object sender, EventArgs e)
    {
        actualizarFaseEnviaCorreo(12, btnCoordinadorProyecto.Text);
    }

    protected void btnImprimirInforme_Click(object sender, EventArgs e)
    {
        Session["COM_ID"] = this.StrComId;

        System.Text.StringBuilder l_msg = new System.Text.StringBuilder();
        l_msg.Append(@"<script language=javascript>");
        l_msg.Append(@"window.open('ReporteComisionInforme.aspx" + @"', 'VentanaImpresion','location=0, status=0, directories=0, hotkeys=no, scrollbars=yes, toolbar=no, menubar=no, personalbar=no');</script>");
        Response.Write(l_msg.ToString());
    }

    protected void btnRechazarInforme_Click(object sender, EventArgs e)
    {
        PopupPanelMotivoRechazo.ShowOnPageLoad = true;
    }
    protected void COM_ENTIDAD_SUMINISTRA_VIATICOS_SelectedIndexChanged(object sender, EventArgs e)
    {
        calcularViaticos();
    }
}
